如何使用 xargs 对 awk 或其他表达式的输出求和

Per*_*ulf 3 shell bash xargs awk

假设我有以下 bash shell 脚本:

#!/bin/bash
export  count=0;
for i in `ls ./mydoc` ;do

     pdfinfo ./mydoc/$i | egrep Pages |awk {'print $2'} |xargs -+ $count   ;
                                                        ^^^^^^^^^^^^^^^^^
done;

echo $count;
Run Code Online (Sandbox Code Playgroud)

它列举了每个 pdf 文件的页面,但我不知道如何将它们相加。!!!!!!

Ala*_*rry 9

只需在 awk 中完成,忘记 xargs。

awk '{total += $2} END {print total}'
Run Code Online (Sandbox Code Playgroud)

但是您只需要运行 awk 一次,并将所有循环的输出通过管道传输到其中。为什么不也消除单独的 grep ......

for i in mydoc/* ; do
    pdfinfo $i
done | awk '/^Pages/ { total += $2 } END { print total }'
Run Code Online (Sandbox Code Playgroud)