如何在bash中过滤列值

B3l*_*luT 3 bash awk grep filter

我在尝试grep(过滤)一个整数值的日志文件时遇到问题。

logfile.log:

2014-11-16 21:22:15 8 10.133.23.9 PROXIED ...
2014-11-16 21:22:15 1 163.104.40.133 authentication_failed DENIED ...
2014-11-16 21:22:15 15 163.104.40.134 authentication_failed DENIED ...
2014-11-16 21:22:16 9 163.104.124.209 PROXIED ...
Run Code Online (Sandbox Code Playgroud)

我有3列一个int: ,81,。159

我只需要,如果到grep: value > 10

就像是:

cat logfile.log | grep {$2>10}
2014-11-16 21:22:15 15 163.104.40.134 authentication_failed DENIED ...
Run Code Online (Sandbox Code Playgroud)

fed*_*qui 5

这应该使!

$ awk '$3>10' file
2014-11-16 21:22:15 15 163.104.40.134 authentication_failed DENIED ...
Run Code Online (Sandbox Code Playgroud)

$3我们指的是第三字段中,以使得$3>10装置:线具有第三场大于10更大如果这是完成的,该条件为真,并因此awk执行其默认行为:打印线。

您当然可以说:只打印特定的字段,例如,您可以说awk '$3>10 {print $1}' file