我想用sed完成以下操作 1.找到[sometext] 完全匹配
的第一次出现2.然后从那里开始搜索stuID = 10 完全匹配
3.然后在[sometext]
下为第一次出现的stuID附加行checkID = 4注意:checkID的值会根据[sometext]改变,这就是为什么我只需要为第一次出现添加行
我的尝试
sed'/ [sometext] / {s / stuID = 10 / a \ checkID = 4/1}'file.txt
sed's / [sometext] / {s / stuID = 10 / a \ checkID = 4/1}'file.txt
sed'/ [sometext] / {s / stuID = 10 / a \ checkID = 4 / g}'file.txt
{只是为了查看命令是否有效,如果我没有指定添加新行的次数。
我添加了\]来逃避[]
结果
1.命令执行但在file.txt
中的任何地方都没有添加checkID = 4 2.Error:sed:-e expression#1,char 18:multiple g' options to
s'命令
暗示语法本身是错误的
3.命令执行但在file.txt
中的任何地方都没有添加checkID = 4当我说执行时我的意思是没有错误信息
File.txt
[sometext]
blah blah blah
blah blah blah
stuID = 10
blah blah blah
blah blah blah
[Anothertext]
blah blah blah
blah blah blah
stuID = 5
blah blah blah
blah blah blah
我想要它 File.txt
[sometext]
blah blah blah
blah blah blah
stuID = 10
checkID=4
blah blah blah
blah blah blah
[Anothertext]
blah blah blah
blah blah blah
stuID = 5
checkID=6
blah blah blah
blah blah blah
我现在已经完全厌倦了。希望有人可以帮助我
此致
答案 0 :(得分:0)
这可能适合你(GNU sed):
sed -e '/\[sometext\]/,/stuID = 10/{/stuID = 10/{a\checkID = 4' -e ':a;n;ba}}' file
这将找到2个搜索字符串之间的范围并附加所需的文本。最后,文件的其余部分将被传递。