删除包含不区分大小写匹配的行

cos*_*ist 3 grep sed awk case-sensitivity

我有一个包含以下信息的文件:

20    BaDDOg
31    baddog
42    badCAT
43    goodDoG
44    GOODcAT
Run Code Online (Sandbox Code Playgroud)

我想删除所有包含单词的行dog。这是我想要的输出:

42    badCAT
44    GOODcAT
Run Code Online (Sandbox Code Playgroud)

但是,dog大小写不敏感。

我以为我可以使用 sed command: sed -e "/dog/id" file.txt,但我似乎无法让它工作。这与我在 OSX 上工作有关吗?我可以使用其他方法吗?

pfn*_*sel 11

尝试grep

grep -iv dog inputfile
Run Code Online (Sandbox Code Playgroud)

-i忽略大小写并-v反转匹配。

如果你想使用sed你可以这样做:

sed '/[dD][oO][gG]/d' inputfile
Run Code Online (Sandbox Code Playgroud)

GNU使用修饰符sed扩展模式匹配I,这应该使匹配不区分大小写,但这并不适用于所有风格的sed. 对我来说,这有效:

sed '/dog/Id' inputfile
Run Code Online (Sandbox Code Playgroud)

但它不适用于 OS X。