这是在引用另一个问题: 我如何使用robocopyrecursion地列出一定大小的所有文件?
我想分析一个命令(或猫日志文件)的输出,并find一个string值,将其转换为一个整数,然后看看该整数值是否大于给定的整数。
例如,给出这样一行:
*EXTRA File 78223 C:\_Google.Enterprise.Contract.2010-06-01.pdf
我想比较'78223'和'10485760'。 这可能与grep或sed?
谢谢!
使用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
另外 – 如果你使用类Unix的用户空间(比如UnxUtils或Cygwin,如果你在Windows上),你可以使用find和-size参数来直接获取你的文件列表,然后pipe道到xargs并做任何事情你正在尝试使用选定的文件。
你的问题的一般答案(有趣的比较和其他操作)确实是awk或bash(与bc)或perl – 但具体的情况适合于find 。
在纯粹的Bash中:
while read -r _ _ size _; do ((size > 10485760)) && echo "hit"; done < foo.log
Perl可以类似于awk使用:
echo '*EXTRA File 78223 C:\foo.pdf' | perl -ane 'print if $F[2] > 40000'