awk修改到数据文件的特定行

时间:2017-09-19 17:02:28

标签: awk

我有一个数据文件,每列有2列和500行。要访问第二列的第5行,我这样做:

awk 'FNR == 5 {print $2}'

并修改第二列,比如乘以0.8,我这样做:

awk '{print $2*0.8}' inputfile

如果我想乘第二列,比如从第1行到第10行,我该如何修改awk命令?

1 个答案:

答案 0 :(得分:2)

sample.csv:

line1,1
line2,4
line3,1
line4,1
line5,5
line6,1
line7,1
line8,1
line9,1
line10,1
line11,1
line12,1

根据我的理解,您的描述不是很清楚:

1)如果乘以第1-10行的值:

 awk -F, 'BEGIN{OFS=","}{if(NR<=10){print $1,$2*0.8 }else{print $0}}' sample.csv

输出:

line1,0.8
line2,3.2
line3,0.8
line4,0.8
line5,4
line6,0.8
line7,0.8
line8,0.8
line9,0.8
line10,0.8
line11,1
line12,1

2)乘以第1 - 10行的所有第二列:

awk -F, 'BEGIN{OFS=","; result=1} (NR<=10){result *= $2} END{print result}' sample.csv

输出:

20

-F,表示文件分隔符为逗号 OFS=","是输出文件分隔符 if-else检查条件