bash - 如何在 bash 中过滤列值

标签 bash awk filter grep

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

日志文件.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 ...

我在第 3 列中有一个整数:81159

只有在以下情况下我才需要 grep:value > 10

类似于:

cat logfile.log | grep {$2>10}
2014-11-16 21:22:15 15 163.104.40.134 authentication_failed DENIED ...

最佳答案

这应该可以!

$ awk '$3>10' file
2014-11-16 21:22:15 15 163.104.40.134 authentication_failed DENIED ...

使用 $3 我们引用第三个字段,因此 $3>10 表示:第三个字段大于 10 的行。如果完成,则条件为真因此 awk 执行其默认行为:打印该行。

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

关于bash - 如何在 bash 中过滤列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27022025/

相关文章:

php - 阵列相对于另一个的快速过滤器

linux - 终端中的脚本输出与 MOTD 输出不同

awk 根据列合并行

bash - 如何用另一个文件的映射值替换 csv 文件中的第 n 个字段?

filter - Logstash替换@timestamp

python - 使用 boolean 逻辑合并和过滤一个数据帧的多列

linux - 计算 shell 脚本每一步的时间并显示总执行时间

bash - 使用 grep 一次搜索两个表达式

Bash glob 参数只显示第一个文件而不是所有文件

svn - unix 命令 svn log 仅获取文件信息