我有一个数据文件:
1 2 3
1 5 7
2 5 9
11 21 110
6 17 -2
10 2 8
6 4 3
5 1 8
6 1 5
7 3 1我只想在第三列中添加第1,3,6,8,9,10行,第2列,第6~9行。
我知道如何使用awk将2添加到整个第二列,并将1添加到整个第三列。
awk '{print $1, $2+2, $3+1}' data > data2但是,如何将此代码修改为第二列和第三列的特定行?
谢谢
最好的
发布于 2016-03-18 00:02:15
awk去营救!您可以在条件下检查NR,但对于6个值,这将是乏味的,或者,您也可以检查字符串匹配与锚定NR。
$ awk 'BEGIN{lines=",1,3,6,8,9,10,"}
match(lines,","NR","){$3++}
NR>=6 && NR<=9{$2+=2}1' nums
1 2 4
1 5 7
2 5 10
11 21 110
6 17 -2
10 4 9
6 6 3
5 3 9
6 3 6
7 3 2发布于 2016-03-18 00:44:44
$ cat tst.awk
BEGIN {
for (i=6;i<=9;i++) {
d[2,i] = 2
}
split("1 3 6 8 9 10",t);
for (i in t) {
d[3,t[i]] = 1
}
}
{ $2 += d[2,NR]; $3 += d[3,NR]; print }
$ awk -f tst.awk file
1 2 4
1 5 7
2 5 10
11 21 110
6 17 -2
10 4 9
6 6 3
5 3 9
6 3 6
7 3 2https://stackoverflow.com/questions/36073678
复制相似问题