Bash
如何將 awk 或其他表達式的輸出與 xargs 相加
假設我有以下 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