cut命令用于分隔输出并添加它们

时间:2014-01-15 06:25:44

标签: linux bash

我是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”循环并添加这些数字? 如何?

提前谢谢

1 个答案:

答案 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非常棒,因为你可以直接处理总行数和管道只是另一个流程。)