我在这个论坛上看到了类似的问题,但这个问题与这些问题没什么不同。因此,请不要将此视为重复。
我有一个包含数据的文件
blah blah
blah blah Select from table blah blah QWERTY blah
Select from table
QWERTY Here
blah blah
现在我要删除同时包含Select from table
和QWERTY
预期产出:
blah blah
Select from table
QWERTY Here
blah blah
我试过如下:
sed /*Select from table*QWERTY*/d file.txt
但它不起作用。有人可以帮忙吗?
答案 0 :(得分:3)
你和sed
尝试很接近:
$ sed '/Select from table.*QWERTY/d' file
blah blah
Select from table
QWERTY Here
blah blah
您应始终使用单引号引用脚本,并且不要将shell globbing与正则表达式混淆。使用正则表达式匹配任何字符的零个或多个是.*
。
如果订单有保证,那么只需使用grep
选项即可-v
:
$ grep -v 'Select from table.*QWERTY' file
blah blah
Select from table
QWERTY Here
blah blah
如果订单无法保证,则使用awk
之类的语言,您可以将正则表达式匹配与逻辑运算符组合使用:
$ awk '!/Select from table/||!/QWERTY/' file
blah blah
Select from table
QWERTY Here
blah blah