我有一个数据文件:
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添加到第三列,仅适用于行号1,3,6,8,9,10。并将第2列添加2,行号为6~9。
我知道如何在整个第二列中添加2,并使用awk
在整个第三列中添加1awk '{print $1, $2+2, $3+1}' data > data2
但是如何将此代码修改为第二列和第三列的特定行?
谢谢
最好,
答案 0 :(得分:2)
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
答案 1 :(得分:0)
$ 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 2