grep 或 sed 来查找大于给定数量的整数值?

grep 或 sed 来查找大于给定数量的整数值?

这是针对另一个问题的:如何使用 robocopy 递归列出所有超过一定大小的文件?

我想解析命令的输出(或 cat 日志文件)并找到一个字符串值,将其转换为整数,然后查看该整数值是否大于给定的整数。

例如,给定以下行:

      *EXTRA File          78223    C:\_Google.Enterprise.Contract.2010-06-01.pdf

我想比较“78223”和“10485760”。使用 grep 或 sed 可以实现吗?

谢谢!

答案1

使用awk方法如下:

$ echo '*EXTRA File     78223    C:\foo.pdf' | awk '$3 > 1048576 {print $0;}'
$ echo '*EXTRA File     78223    C:\foo.pdf' | awk '$3 > 40000 {print $0;}'
*EXTRA File     78223    C:\foo.pdf

答案2

另外 - 如果您使用的是类 Unix 用户空间(例如,如果您使用的是 Windows,则为 UnxUtils 或 Cygwin),您可以使用find参数-size直接获取文件列表,然后通过管道传输到 xargs 并对选定的文件执行任何您想要执行的操作。

对您的问题(有趣的比较和其他操作)的一般答案确实是 awk 或 bash(带有 bc)或 perl - 但具体场景适合find

答案3

在纯 Bash 中:

while read -r _ _ size _; do ((size > 10485760)) && echo "hit"; done < foo.log

答案4

Perl 的使用方式与 awk 类似:

echo '*EXTRA File 78223 C:\foo.pdf' | perl -ane 'print if $F[2] > 40000'

相关内容