0

我想用 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.命令被执行,但 checkID=4 未添加到 file.txt 中的任何位置

2.Error : sed: -e expression #1, char 18: multiple g' options to s' command 暗示语法本身是错误的

3.命令被执行,但 checkID=4 未添加到 file.txt 中的任何位置

当我说执行时,我的意思是没有错误消息

文件.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

在这一点上我完全累了,一无所知。希望有人能帮助我

问候

4

1 回答 1

0

这可能对您有用(GNU sed):

sed -e '/\[sometext\]/,/stuID = 10/{/stuID = 10/{a\checkID = 4' -e ':a;n;ba}}' file

这将找到 2 个搜索字符串之间的范围并附加所需的文本。最后,文件的其余部分被传递。

于 2013-08-05T05:19:17.940 回答