Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 变长表上的Bash列和_Linux_Bash_Awk_Sum_Multiple Columns - Fatal编程技术网

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

要包含标题,请参见
--标题输出
选项

非常感谢。非常感谢。非常感谢。非常感谢。