根据特定值过滤字段

时间:2014-01-02 19:24:19

标签: shell unix

祝大家新年快乐。

我有一个看起来像这样的文件(例子):没有标题,这个文件有大约10000个这样的行

123 345 676 58 1 
464 222 0 0 1 
555 22 888 555 1 
777 333 676 0 1 
555 444 0 58 1 

问题:我只想要那些字段3和4都具有非零值的行,即在上面的例子中第1行和第1行。应包括第3行,并应排除休息。我怎样才能做到这一点?

输出应如下所示:

123 345 676 58 1 
555 22 888 555 1 

感谢。

1 个答案:

答案 0 :(得分:1)

awk非常适合这种事情:

awk '$3 && $4' input.txt

这将为您提供所需的输出。

$3 && $4是一个过滤器。 $3是第3个字段的值,$4是第4个字段的值。 0值将评估为false,其他任何值都将评估为true。如果可能存在负值,则需要更精确地编写:

awk '$3 > 0 && $4 > 0' input.txt