使用通配符通过 sed 删除整行

使用通配符通过 sed 删除整行
E219 E36 C5X       
C201 C19 C5X

E229 E36 C5X  
E239 E36 C5X  
C311 C19 C5X

在此文件示例中,我需要删除所有包含 C[0-9][0-9][0-9] 的行。如何使用 sed 命令执行此操作?输出应为:

E219 E36 C5X       
E229 E36 C5X  
E239 E36 C5X  

我尝试了以下代码:

 sed -i '/^C[0-9][0-9][0-9]$/d' data 

但它不起作用。

答案1

锚点^$让你的表情只匹配完全由单身的4 个字符的序列C[0-9][0-9][0-9],而您的data文件包含多个序列(可能还有一些尾随空格)。如果您放宽该限制,它将起作用,或者

sed '/^C[0-9][0-9][0-9]/d' data

(仅匹配行首)或

sed '/C[0-9][0-9][0-9]/d' data

(匹配一行中的任意位置)。如果您还想删除示例中所示的空行,那么

sed -e '/C[0-9][0-9][0-9]/d' -e '/^$/d' data

相关内容