我正在使用这个看起来像这样的数据文件:
text in file
hello random text in file
example text in file
words in file hello
more words in file
hello text in file can be
more text in file
我正在尝试使用sed替换 not 包含hello
字符串match
的所有行,因此输出将为:
match
hello random text in file
match
words in file hello
match
hello text in file can be
match
我尝试使用sed '/hello/!d'
但删除了该行。另外,我读到我可以在sed中使用!
进行匹配,但我不确定如何匹配每一行并正确替换。如果你可以给我一些方向,我会非常感激。
答案 0 :(得分:5)
awk
救援!
$ awk '!/hello/{$0="match"}1' file
将不匹配“hello”的行替换为“match”并打印所有行。
答案 1 :(得分:5)
你可以这样做:
$ sed '/hello/!s/.*/match/' infile
match
hello random text in file
match
words in file hello
match
hello text in file can be
match
/hello/!
确保我们仅替换不包含hello
的行(您拥有该权限),然后替换将完整的模式空间(.*
)替换为{{ 1}}。
答案 2 :(得分:3)
带有c
(更改)命令的sed:
$ sed '/hello/!c match' file
match
hello random text in file
match
words in file hello
match
hello text in file can be
match
答案 3 :(得分:0)
只需使用awk即可获得清晰,简洁等等:
awk '{print (/hello/ ? $0 : "match")}' file