awk用字符串删除行...如果字符串包含行返回怎么办?

时间:2018-05-14 19:14:47

标签: awk

尝试去掉包含几个字符串的文件中的行,这非常有效:

awk '!/string1/string\ 2/' file.txt > file.filtered.txt

现在我需要在任何行的末尾添加一个包含“string3”的字符串。

是否可以添加包含换行符的字符串?

我尝试了这些迭代但没有效果:

awk '!/string1/string\ 2/string3\n/' file.txt > file.filtered.txt

awk '!/string1/string\ 2/string3\\n/' file.txt > file.filtered.txt

例如,我们要删除以此结尾的行:

YYYY-MM-DD HH:MM:SS criteria=value, criteria=value, tag=ABC

但不要删除以此结尾的行:

YYYY-MM-DD HH:MM:SS criteria=value, criteria=value, tag=ABC (123)

思想?

TIA, 唐

2 个答案:

答案 0 :(得分:0)

首先要注意的是:你的例子毫无意义,并且会给你awk的各种错误(语法错误,"反斜杠不是最后一个字符在线","意外换行"等)。我认为你的意思是

awk '!/string1|string 2/'

会删除与string1string 2匹配的行。这些只是普通的正则表达式,所以如果你只想匹配一行末尾的东西,请使用$

awk '!/string1|string 2|string3$/'

将删除包含string1string 2或以string3

结尾的任何行

答案 1 :(得分:0)

谢谢,这完美无缺......你们大家都是无价之宝!

awk '!/string1|string\ 2|string3$/'