我正在尝试使用sed
删除文本文件中的某些行。我只想删除包含两个字符串的行。命令\|
等同于布尔OR
。布尔运算符AND
的命令是什么?
我正在寻找类似的东西:
sed '/strA'AND'strB/d' file.txt
答案 0 :(得分:3)
sed '/strA/{
/strB/ d
}' YourFile
答案 1 :(得分:2)
您可以使用相同的\|
OR(交替)运算符。以下sed命令将删除同时具有strA
和strB
的所有行,无论顺序如何。
sed '/strA.*strB\|strB.*strA/d' file.txt
如果您要删除strA
之前总是strB
之前的行,那么您可以使用此行。
sed '/strA.*strB/d' file.txt
答案 2 :(得分:1)
你不能在一个命令上放两个选择器,但你可以在大括号之间放一个命令并执行:
sed '/strA/{/strB/d}' file.txt
不好的部分是,如果你想要测试很多字符串,你可能需要处理很多{}
。此外,它可能效率不高。
答案 3 :(得分:1)
这可能适合你(GNU sed):
sed '/strA/!b;/strB/d' file
如果该行不包含strA
拯救。如果是,它还包含strB
删除它。