2

我在这个论坛上看到了一个类似的问题,但这个问题与那些问题没什么不同。因此,请不要将其视为重复。

我有一个包含数据的文件

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

但它不起作用。有人可以帮忙吗?

4

1 回答 1

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
于 2013-08-28T12:54:28.457 回答