我是bash的新手 我写了一个bash脚本,它给了我一个这样的输出:
3387 /test/file1
23688 /test/file2
5813 /test/file3
10415 /test/file4
1304 /test/file5
46 /test/file6
8 /test/file7
138 /test/file8
我可以通过
划分它们 wc -l /path/to/$dir/test | cut -d" " -f1
如何将数字添加到彼此并计算它们? 我可以这样做:
output=`wc -l /path/to/$dir/test | cut -d" " -f1`
是否可以使用“while”或“for”循环并添加这些数字? 如何?
提前谢谢
答案 0 :(得分:1)
您希望此处awk
避免显式循环。如果您的输出位于data.txt
文件中,则可以使用:
$ awk '{sum += $1} END {print sum}' data.txt
44799
在您的情况下,将脚本的输出传递给awk
:
$ your_script.sh | awk '{sum += $1} END {print sum}'
由于您在问题中提供的输出是wc -l
的输出,请尝试:
$ wc -l /path/to/$dir/test | awk '{sum += $1} END {print sum}'
(除了登陆此页面的其他人:wc -l
,如果给出通配符,也会给你一个总数,但在这种情况下使用awk
非常棒,因为你可以直接处理总行数和管道只是另一个流程。)