bash 中列表的数学运算
Math operation on list in bash
我在 bash 的列表中有一个数字列表:
bb=" 1 3 6 7 12 14 16 21 27 29 32 35 39 42"
我想对其应用数学运算(add/subtract/divide/multiply 此列表的每个项都有一个数字)。如何使用 bash?
执行此操作
使用前面介绍的bb
的例子:
- 每个数字加1,结果:
2 4 7 8 13 15 17 22 28 30 33 36 40 43
- 乘以 5:
5 15 30 35 60 70 80 105 135 ...
我试过这个:awk '{for(i=1;i<=NF;i++){$i=1+$i}}END{print [=15=]}' <<< $bb
但是 [=16=]
returns 只有原始记录而不是修改后的记录。
通过awk加法,
$ bb=" 1 3 6 7 12 14 16 21 27 29 32 35 39 42"
$ awk '{for(i=1;i<=NF;i++){$i=1+$i}}1' <<< $bb
2 4 7 8 13 15 17 22 28 30 33 36 40 43
乘法
$ awk '{for(i=1;i<=NF;i++){$i=5*$i}}1' <<< $bb
5 15 30 35 60 70 80 105 135 145 160 175 195 210
您可以使用循环:
for num in $bb ; do
results+=( $(( num + 1 )) )
# results+=( $(( num * 5 )) )
done
echo "${results[@]}"
你 可以 使用 bash 算术运算,在编写 bash 函数后,你在 bash feed 中输入元素您的列表,您可能会用很多工具将其拆分。
不过说真的,bash 不是算术工具。在现代系统中,有大量可用的脚本语言,没有理由不使用它们。
例如:
python -c "print sum([int(substring) for substring in '$bb'.split(' ')])"
如果你想使用 python 单线;您当然可以只编写 python 程序并使用数量惊人的库。我发现自己经常从 shell 脚本开始,然后弄清楚对其他可执行文件的(有意的)调用只占代码的一小部分,大部分事情可以在 [=24= 中更好地完成] 语言,然后用 python 的更少行重写内容。
编辑:您想计算 PDF 中的页数:
#!/usr/bin/python
import poppler
doc = poppler.document_new_from_file("file:///home/guuk/document.pdf","")
print doc.get_n_pages()
我在 bash 的列表中有一个数字列表:
bb=" 1 3 6 7 12 14 16 21 27 29 32 35 39 42"
我想对其应用数学运算(add/subtract/divide/multiply 此列表的每个项都有一个数字)。如何使用 bash?
执行此操作使用前面介绍的bb
的例子:
- 每个数字加1,结果:
2 4 7 8 13 15 17 22 28 30 33 36 40 43
- 乘以 5:
5 15 30 35 60 70 80 105 135 ...
我试过这个:awk '{for(i=1;i<=NF;i++){$i=1+$i}}END{print [=15=]}' <<< $bb
但是 [=16=]
returns 只有原始记录而不是修改后的记录。
通过awk加法,
$ bb=" 1 3 6 7 12 14 16 21 27 29 32 35 39 42"
$ awk '{for(i=1;i<=NF;i++){$i=1+$i}}1' <<< $bb
2 4 7 8 13 15 17 22 28 30 33 36 40 43
乘法
$ awk '{for(i=1;i<=NF;i++){$i=5*$i}}1' <<< $bb
5 15 30 35 60 70 80 105 135 145 160 175 195 210
您可以使用循环:
for num in $bb ; do
results+=( $(( num + 1 )) )
# results+=( $(( num * 5 )) )
done
echo "${results[@]}"
你 可以 使用 bash 算术运算,在编写 bash 函数后,你在 bash feed 中输入元素您的列表,您可能会用很多工具将其拆分。
不过说真的,bash 不是算术工具。在现代系统中,有大量可用的脚本语言,没有理由不使用它们。
例如:
python -c "print sum([int(substring) for substring in '$bb'.split(' ')])"
如果你想使用 python 单线;您当然可以只编写 python 程序并使用数量惊人的库。我发现自己经常从 shell 脚本开始,然后弄清楚对其他可执行文件的(有意的)调用只占代码的一小部分,大部分事情可以在 [=24= 中更好地完成] 语言,然后用 python 的更少行重写内容。
编辑:您想计算 PDF 中的页数:
#!/usr/bin/python
import poppler
doc = poppler.document_new_from_file("file:///home/guuk/document.pdf","")
print doc.get_n_pages()