如何使用awk和xxd从跟踪文件中提取数据

时间:2014-06-06 19:04:14

标签: gawk xargs

我正在尝试从跟踪文件中提取数据并计算总和。对于单个文件,以下命令有效:

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

但是当我尝试将它与xargs命令一起使用时,由于我必须对多个fils执行相同的操作,因此出现语法错误。

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

gawk:{T + =} END {print T n}

gawk:^语法错误

有人可以告诉我这是什么问题吗?

2 个答案:

答案 0 :(得分:0)

xargs增加了很多复杂性:

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

您的代码的主要问题是外部双引号,允许$1扩展为shell变量。

答案 1 :(得分:0)

使用GNU Parallel,您可以这样做:

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