如何在首先添加列,其中包含从表达式计算的值。此表达式具有以下形式:(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
感谢
答案 0 :(得分: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