【发布时间】:2015-06-05 06:14:56
【问题描述】:
我在一个目录中有许多 .txt 文件。每个文件只有一个整数。 如何编写 bash 脚本来添加这些整数并将输出保存到文件中?
【问题讨论】:
我在一个目录中有许多 .txt 文件。每个文件只有一个整数。 如何编写 bash 脚本来添加这些整数并将输出保存到文件中?
【问题讨论】:
只需遍历提取整数的文件,然后对它们求和:
grep -ho '[0-9]*' files* | awk '{sum+=$1} END {print sum}'
grep -ho '[0-9]*' files* 从名称与files* 匹配的文件中提取数字。我们使用-h 来防止获取匹配的文件名,使用-o 来获取匹配,而不是整行。awk '{sum+=$1} END {print sum}' 循环遍历来自 grep 的值并将它们相加。最后,打印结果。$ tail a*
==> a1 <==
hello 23 asd
asdfasfd
==> a2 <==
asdfasfd
is 15
==> a3 <==
$ grep -ho '[0-9]*' a* | awk '{sum+=$1} END {print sum}'
38
【讨论】:
您可以cat您的文件,然后使用awk进行总结:
cat *.txt | awk '{x+=$0}END{print x}' > test.txt
test.txt 应该包含总和。
【讨论】:
创建一些测试文件:
$ for f in {a,b,c,d}.txt; do
> echo $RANDOM > "$f"
> done
$ cat *.txt
18419
25511
31919
28810
使用 Bash 求和:
$ i=0;
$ for f in *.txt; do
> ((i+=$(<"$f")));
> done
$ echo $i
104659
【讨论】: