2014-06-06 36 views
1

我試圖從跟蹤文件中提取數據並計算總和。對於單個文件,下面的命令工作:如何使用awk和xxd從跟蹤文件中提取數據

cat avg.txt| gawk '{T+=$1} END {print T "\n"}' 

但是當我嘗試使用它與xargs的命令,我必須做多費爾相同的操作,我得到一個語法錯誤。

 ls *avg* | xargs -i sh -c " cat {} | gawk '{T+=$1} END {print T "\n"}'" 

GAWK:{T + =} END {印花T N}

GAWK:^語法錯誤

有人能告訴我是什麼問題?

+0

改變你的sh調用到'SH -vxc」 ......'所以你可以看到正在由外殼procssed此外,逃不過你的awk'。 \ $ 1',祝你好運。 – shellter

回答

0

xargs的是增加複雜性的很多:

for file in *avg*; do 
    gawk '{T+=$1} END {print FILENAME ": "T}' "$file" 
done 

與您的代碼的主要問題是外雙引號,允許$1被作爲一個shell變量擴大。

0

隨着GNU並行你可以這樣做:

sum() { 
    gawk '{T+=$1} END {print FILENAME ": "T}' $1 
} 
export -f sum 
parallel sum ::: *avg* 
相關問題