Bash 提取数据的对角线

Bash 提取数据的对角线,bash,Bash,由于bash,我想提取数据的对角线,它看起来像一个方阵 数据如下: 0.65603 -0.41101 0.17555 0.07549 -0.18749 0.07549 0.17555 -0.41101 -0.41101 0.72255 -0.65014 0.25679 0.13301 -0.24321 0.05697 0.22255 0.17555 -0.65014 0.80380 -0.59262 0.20108 0.11449 -0.19620 0.05697

由于bash,我想提取数据的对角线,它看起来像一个方阵

数据如下:

 0.65603 -0.41101  0.17555  0.07549 -0.18749  0.07549  0.17555 -0.41101
-0.41101  0.72255 -0.65014  0.25679  0.13301 -0.24321  0.05697  0.22255
 0.17555 -0.65014  0.80380 -0.59262  0.20108  0.11449 -0.19620  0.05697
 0.07549  0.25679 -0.59262  0.74808 -0.61115  0.24808  0.11449 -0.24321
-0.18749  0.13301  0.20108 -0.61115  0.79509 -0.61115  0.20108  0.13301
 0.07549 -0.24321  0.11449  0.24808 -0.61115  0.74808 -0.59262  0.25679
 0.17555  0.05697 -0.19620  0.11449  0.20108 -0.59262  0.80380 -0.65014
-0.41101  0.22255  0.05697 -0.24321  0.13301  0.25679 -0.65014  0.72255
Point group blocks [8]
 2.00000
 1.99989
 1.74085
 0.25904
 0.00022
 0.00000
 0.00000
 0.00000
我不关心“点群块”后面是什么,我只需要平方矩阵的对角线。我想我必须做一些像grep的第n行字符链,但我不知道怎么做。。。对于第一行,我只做:

value=`grep '' data`
value1=`echo "${value:0:8}"  | bc -l`
这只是第一个值,当然。。。是否有一种通用的方法来grep任何平方数据的每个对角线值

编辑:如果我们看关于重复主题的答案,我的情况应该是:

awk '{ for (i=0; i<=NF; i++) if (NR >= 1 && NR == i) print $(i) }' file.txt
awk'{for(i=0;i=1&&NR==i)print$(i)}文件.txt
在这种情况下,我们要添加大量的行:

awk '{ for (i=0; i<=NF; i++) if (NR >= 1 && NR == i) print i,$(i) }' file.txt
awk'{for(i=0;i=1&&NR==i)print i,$(i)}file.txt

awk
是正确的工具

awk '/Point/{exit 0} {print $NR}' file.txt
如果脚本遇到第一行中有“点”,脚本将停止。在打印等于行号的字段之前,用于所有行