【发布时间】:2013-08-05 13:55:45
【问题描述】:
我想用 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 }' 文件.txt
{只是看看如果我没有指定添加新行的次数,命令是否有效。
我加了\]来转义[]
结果
1.Command 被执行但 checkID=4 没有添加到 file.txt 中
2.Error : sed: -e expression #1, char 18: multiple g' options to s' 命令
暗示语法本身是错误的
3.Command 被执行但 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
我希望它成为 文件.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
在这一点上我完全累了,一无所知。希望有人能帮助我
问候
【问题讨论】:
-
提示:awk 是更好的工具来处理这个要求。