Bash

如何將 awk 或其他表達式的輸出與 xargs 相加

  • August 30, 2012

假設我有以下 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;

它列舉了每個 pdf 文件的頁面,但我不知道如何將它們匯總在一起。!!!!!!

只需在 awk 中執行,忘記 xargs。

awk '{total += $2} END {print total}'

但是您只需要執行一次 awk ,所有循環的輸出都通過管道傳輸到其中。為什麼不也消除單獨的 grep ……

for i in mydoc/* ; do
   pdfinfo $i
done | awk '/^Pages/ { total += $2 } END { print total }'

試試內置的計算方法:

#!/bin/bash
count=0
for i in ./mydoc/* ; do
 count=$(( $count + $(pdfinfo "$i" | grep Pages |awk {'print $2'}) ))
done
echo $count

引用自:https://unix.stackexchange.com/questions/46644