2016-03-17 58 views
0

我的數據文件:AWK:添加號碼到列特定線

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,第6〜9行。

我知道如何2添加到整個第二列,用awk

awk '{print $1, $2+2, $3+1}' data > data2 

加1,整個第三列,但我怎麼能修改此代碼以第二和第三列的特定行?

感謝

最佳,

+1

AWK具有用於rhis – mark

回答

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

的$ NR variabele另外'BEGIN {A [1]; [3]; A [6];一個; [8] A [9]; A [ 10]}; NR在{$ 3 ++}'; –

+0

是的,這比我的解決方案更聰明。 – karakfa

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