我应该使用哪个命令来对两个特定列的值求和? 例如,我有文件:
1 4 5 1
2 3 5 2
7 8 6 3
我想总结第二列和最后一列,以获得以下结果
1 4 5 1 5
2 3 5 2 5
7 8 6 3 11
是的,我使用awk和bc吗?
我找到了许多例子来总结整个专栏......
答案 0 :(得分:6)
尝试:
awk '{print $0, $2 + $NF }' input_file
答案 1 :(得分:4)
由于您标记了问题bash
(awk
是最合适的工具!)
#!/bin/bash
while read -a ARRAY
do
echo ${ARRAY[@]} $((${ARRAY[1]}+${ARRAY[3]}))
done < input.txt
输出:
$ ./sum.sh
1 4 5 1 5
2 3 5 2 5
7 8 6 3 11
答案 2 :(得分:1)
这是完成你想要的命令:
awk '{$(NF+1)=$NF+$2}1' <filename
答案 3 :(得分:1)
对于简单的计算,awk
是要走的路。在更复杂的情况下,您可能希望并行化操作,您可以使用GNU parallel和您选择的计算器来执行此操作。
使用bash
:
<infile parallel --colsep ' +' echo '{}' '$(( {2} + {4} ))
bash
和bc
:
<infile parallel --colsep ' +' echo '{}' '$(bc <<< "{2} + {4}")'
注意,parallel
的当前版本没有简单的方法来引用输入的最后一个元素,但是,现在开发分支中的补丁允许对元素进行负索引,即然后就可以使用{-1}
代替{4}
。