Linux 变长表上的Bash列和
我正在尝试获取由数字分隔的选项卡的列和(第一个除外) 要找出存储在变量中的列数,我使用:Linux 变长表上的Bash列和,linux,bash,awk,sum,multiple-columns,Linux,Bash,Awk,Sum,Multiple Columns,我正在尝试获取由数字分隔的选项卡的列和(第一个除外) 要找出存储在变量中的列数,我使用: cols=$(awk'{print NF}file.txt | sort-nu | tail-n1 接下来,我要计算该列中所有数字的总和,并将其再次存储在for循环中的变量中: for c in 2:$col do num=$(cat file.txt | awk '{sum+$2 ; print $0} END{print sum}'| tail -n 1 done 这个 num=$(cat fil
cols=$(awk'{print NF}file.txt | sort-nu | tail-n1
接下来,我要计算该列中所有数字的总和,并将其再次存储在for循环中的变量中:
for c in 2:$col
do
num=$(cat file.txt | awk '{sum+$2 ; print $0} END{print sum}'| tail -n 1
done
这个
num=$(cat file.txt | awk'{sum+$($c);print$0}END{print sum}'| tail-n1
在它自身上,使用固定的数字和不带变量的输入可以找到,但我不能让它接受for循环变量
谢谢你的支持
p、 如果我可以一次对所有列(第一列除外)求和,而不出现循环问题,那也没问题。假设您需要单个列的和
$ cat file
1 2 3 4
5 6 7 8
9 10 11 12
$ awk '
{for (i=2; i<=NF; i++) sum[i] += $i}
END {for (i=2; i<=NF; i++) printf "%d%s", sum[i], OFS; print ""}
' file
18 21 24
$cat文件
1 2 3 4
5 6 7 8
9 10 11 12
$awk'
{for(i=2;i假设需要各个列的总和
$ cat file
1 2 3 4
5 6 7 8
9 10 11 12
$ awk '
{for (i=2; i<=NF; i++) sum[i] += $i}
END {for (i=2; i<=NF; i++) printf "%d%s", sum[i], OFS; print ""}
' file
18 21 24
$cat文件
1 2 3 4
5 6 7 8
9 10 11 12
$awk'
{for(i=2;i如果您没有绑定到awk
,有一个很好的工具,用于对文本文件执行“命令行”,名为
使用datamash
,对第二列进行求和(可能是最简单的操作)非常简单:
$ datamash sum 2 < table
9
要对从2
到n
的所有列求和,请使用(在datamash
1.2中提供):
$n=4
$datamash总和2-$n<表
9 12 15
要包含标题,请参阅--headers out
选项如果您没有绑定到awk
,有一个很好的工具,用于对文本文件执行“命令行”
使用datamash
,对第二列进行求和(可能是最简单的操作)非常简单:
$ datamash sum 2 < table
9
要对从2
到n
的所有列求和,请使用(在datamash
1.2中提供):
$n=4
$datamash总和2-$n<表
9 12 15
要包含标题,请参见--标题输出
选项非常感谢。非常感谢。非常感谢。非常感谢。