我推荐了帖子:
Sed command : how to replace if exists else just insert?
但是没有一个解决方案似乎有效。任何人都可以解释原因吗?
我只是通过制作特定文件
来执行终端上的命令sed -e 's/^avpgw/new text/' -e t -e 's/^av/new text/' -e t -e 's/^/new text/' file
sed '/^FOOBAR=/{h;s/=.*/=newvalue/};${x;/^$/{s//FOOBAR=newvalue/;H};x}' infile
答案 0 :(得分:3)
测试用例:
$ cat > file
match
miss
awk中的解决方案:
$ awk 'sub(/match|$/,"hit")' file
hit
misshit
即。替换第一个match
或结束记录$
,以先到者为准。
答案 1 :(得分:0)
使用sed
:
sed '/match/{s/match/replace/g;p;D}; /match/!{s/$/replace/g;p;D}' file
<强>测试强>
$ cat file
some text... match ... some text
some text only here...
..... here also...
$ sed '/match/{s/match/replace/g;p;D}; /match/!{s/$/replace/g;p;D}' file
some text... replace ... some text
some text only here...replace
..... here also...replace
注意:的
使用-i
来编辑文件。