Sed 如何替换以文件中某个内容开头的第二行
我尝试用以下代码完全替换以Sed 如何替换以文件中某个内容开头的第二行,sed,Sed,我尝试用以下代码完全替换以[cols=开头的第二行,但是sed忽略了regexp部分(.*) sed -i ':a N;$!ba; s/\[cols=.*/\[cols=\"25%\"\]/2' myfile.txt 如果我删除*,它会将[cols=替换为[cols=“25%”],但不是整行 有什么想法吗?用awk $ cat ip.txt foo [cols="3%"] baz [cols="12%"] xyz [cols=&qu
[cols=
开头的第二行,但是sed忽略了regexp部分(.*)
sed -i ':a N;$!ba; s/\[cols=.*/\[cols=\"25%\"\]/2' myfile.txt
如果我删除*
,它会将[cols=
替换为[cols=“25%”]
,但不是整行
有什么想法吗?用awk
$ cat ip.txt
foo
[cols="3%"]
baz
[cols="12%"]
xyz
[cols="50%"]
$ awk '/\[cols=/ && ++c==2{$0 = "[cols=\"25%\"]"} 1' ip.txt
foo
[cols="3%"]
baz
[cols="25%"]
xyz
[cols="50%"]
匹配包含/\[cols=/
[cols=
检查计数是否为++c==2
(此处2
的初始值为c
)0
将整行更改为所需字符串$0=“[cols=\“25%\”]”“
打印1
$0
GNU awk
,请使用-i inplace
将更改写回输入文件。使用awk
$ cat ip.txt
foo
[cols="3%"]
baz
[cols="12%"]
xyz
[cols="50%"]
$ awk '/\[cols=/ && ++c==2{$0 = "[cols=\"25%\"]"} 1' ip.txt
foo
[cols="3%"]
baz
[cols="25%"]
xyz
[cols="50%"]
匹配包含/\[cols=/
[cols=
检查计数是否为++c==2
(此处2
的初始值为c
)0
将整行更改为所需字符串$0=“[cols=\“25%\”]”“
打印1
$0
如果您有
GNU awk
,请使用-i inplace
写回对输入文件的更改。您可以添加一些示例输入行(比如3-5行)并完成预期的输出吗?另外,您是否使用GNU sed
,因为您有-i
而无需附加参数..您可以添加一些示例输入行吗(假设3-5行)并完成预期输出?另外,您是否使用GNU sed
,因为您没有附加参数就有-i
。。