我要创建一个能够对列进行求和的脚本。该文件看起来像这样:
1 2 3
1 2
1
在没有参数./sum.sh
的情况下执行脚本时,我得到了所有列的总和,所以答案是10.但是我必须让它只添加某些列。例如,./sum.sh 1 3
应该将第一列和第三列相加并给出6。
我的代码:
sum=0
if [[ $# -eq 0 ]]; then
awk '{for(i=1;i<=NF;i++) sum+=$i;}; END {print sum}' plik.txt
else
exit 0;
fi
while [ $# -gt 0 ]
do
awk '{sum +="$1"} END {print sum}' plik.txt
shift
done
我认为我非常接近解决方案,但必须缺少一些东西。
答案 0 :(得分:2)
这一个班轮应该有效:
awk -v c="1 3" 'BEGIN{split(c,cols)}
{for(x in cols)s+=$cols[x]}END{print "Sum:"s}' file
注意c="1 3"
表示要进行求和的列,空格分隔。它可以由shell脚本变量-v c="$var"
设置,awk将进行计算和输出。
使用您的示例文件,上面的单行输出:
Sum:6
答案 1 :(得分:1)
这是您的脚本和Kent的解决方案的组合
#!/bin/bash
file=plik.txt
if [ $# -eq 0 ];
then
awk '{for(i=1;i<=NF;i++) sum+=$i}
END {print sum}' "$file"
else
awk -v cols="$*" 'BEGIN {split(cols,cs)}
{for(c in cs) sum+=$cs[c]}
END {print sum}' "$file"
fi
行动
$ ./sum.sh 1
3
$ ./sum.sh
10
$ ./sum.sh 1 3
6
$ ./sum.sh 1 2
7
$ ./sum.sh 1 2 3 4
10
$ ./sum.sh 1 2 3
10
答案 2 :(得分:0)
这是我提出的,不需要a = tf.zeros([3,4,10,5])
b = tf.zeros([3,4,1,5])
c = tf.concat(2, [a,b])
c.get_shape()
Out: TensorShape([Dimension(3), Dimension(4), Dimension(11), Dimension(5)])
条件:
bash