AWK:将任何行的任何元素除以另一行的某个元素

时间:2015-06-03 16:17:24

标签: awk

我有一个文本文件,其结构如下:

2 2 4 5 6
1 9 7 6 2
1 5 2 8 5

我希望能够将任何行的任何元素除以另一行的元素。例如,如果我想将第1行的第3个元素除以第3行的第2个元素,它将给出:

4/5 = 0.8

用AWK无法找到一种聪明的方法。建议?

2 个答案:

答案 0 :(得分:0)

这可能是你想要的,但没有更多的细节和预期的输出很难说:

$ awk -v num=1,5 -v den=3,3 '{for (i=1;i<=NF;i++) cell[NR","i]=$i} END{print (cell[den] ? cell[num]/cell[den] : "NaN")}' file
3

$ awk -v num=3,4 -v den=1,2 '{for (i=1;i<=NF;i++) cell[NR","i]=$i} END{print (cell[den] ? cell[num]/cell[den] : 0)}' file
4

答案 1 :(得分:0)

如果(i1,j1)和(i2,j2)是分子和分母的坐标,你可以这样做:

i1=1
j1=3
i2=3
j2=2

awk 'NR=='$i1'{a=$'$j1'} NR=='$i2' {b=$'$j2'} END {print a"/"b " = " a/b}' file