awk删除包含数据的行

时间:2011-10-27 21:55:59

标签: awk

我想删除一行,如果它包含指定的值。

2 5 8
1 3 7
8 5 9

因此,如果我想删除包含7作为第三个字段的行:

{
if($3 == 7){
####delete the line
}
}

4 个答案:

答案 0 :(得分:17)

应该足够说

$ awk '$3 != 7'

请注意,这是一个数字比较,并将省略第三个字段所在的行,例如“0.7e1”,但它适用于您提供的示例数据。

答案 1 :(得分:8)

删除包含7

的行
awk '!/7/' yourFile

答案 2 :(得分:6)

其他答案有效。这就是为什么

Awk的标准处理模型是读取一行输入,可选地匹配该行,如果匹配(可选)打印输入。其他解决方案使用否定匹配,因此打印行,除非匹配。

您的代码示例不使用否定匹配:它表示“如果某些内容属实,请执行此操作”。因为您要删除输入,所以当您匹配该目标时,您可以跳过它。

{
  if($3 == 7){
     #skip printing this line
     next
  }
}

IHTH。

答案 3 :(得分:0)

您可以这样做:

awk '$3  /7/ {next} {print}'