0

如何在 first 之后添加一列,该列具有从表达式计算的值。此表达式具有以下形式: (vn+v0)*vl 其中 v0 和 vl 分别是第 3 列的第一个和最后一个元素,而 vn 是该列的第 n 个元素。例如我们有一个文本表:

1 2 3 4
10 20 30 40 
100 200 300 400

它应该转换为

1  1800 3 4
10  9900 30 40 
100 180000 300 400

谢谢

4

1 回答 1

1

作为您在问题中定义的规则,最后一行中的数字不应该是180000. 它应该是 (300+3)*300=90900

这条 awk 行可以为您工作:

 awk 'NR==FNR{c[NR]=$3;l=NR;next}{$2=($3+c[1])*c[l]}7' file file

输出是:

kent$  awk 'NR==FNR{c[NR]=$3;l=NR;next}{$2=($3+c[1])*c[l]}7' file file
1 1800 3 4
10 9900 30 40
100 90900 300 400

编辑

OP希望在第一列之后添加一个新列:

kent$  awk 'NR==FNR{c[NR]=$3;l=NR;next}{$2=($3+c[1])*c[l]" "$2}7' file file
1 1800 2 3 4
10 9900 20 30 40
100 90900 200 300 400
于 2013-07-17T14:58:39.570 回答