所以我有大约303个files。它们都具有相同的格式但长度不同。我需要求和并打印第9列并捕获文件路径。所需格式为:
Filepath sum of column 9
我可以使用以下方法轻松打印第9列的总数:
awk '{ sum += $9 } END { print sum }'
但是我在打印文件路径(不是文件名)时遇到麻烦,中间有2-3个空格。
这可能很简单,但我没有看到它...... 谢谢你的帮助!
答案 0 :(得分:1)
使用FILENAME
$ awk '{sum+=$9} END {print FILENAME" "sum}' File
答案 1 :(得分:1)
如果你有GNU awk,你可以使用特殊的BEGINFILE和ENDFILE块
$ cat f1
13319
17767
18810
19357
$ cat f2
19631
16305
2962
19733
$ gawk 'BEGINFILE {sum = 0} {sum += $1} ENDFILE {print FILENAME, sum}' f1 f2
f1 69253
f2 58631
答案 2 :(得分:1)
你可以用 GNU Parallel 这样做得很好:
parallel --tag --quote awk '{t+=$9} END{print t+0}' ::: file*
--tag
会使用文件名--quote
处理引用awk
脚本:::
标记参数的开始(文件名)