首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWK:将特定行的编号添加到列中

AWK:将特定行的编号添加到列中
EN

Stack Overflow用户
提问于 2016-03-17 23:46:30
回答 2查看 1.6K关注 0票数 0

我有一个数据文件:

代码语言:javascript
复制
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添加到整个第三列。

代码语言:javascript
复制
awk '{print $1, $2+2, $3+1}' data > data2

但是,如何将此代码修改为第二列和第三列的特定行?

谢谢

最好的

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-18 00:02:15

awk去营救!您可以在条件下检查NR,但对于6个值,这将是乏味的,或者,您也可以检查字符串匹配与锚定NR。

代码语言:javascript
复制
$ 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
票数 3
EN

Stack Overflow用户

发布于 2016-03-18 00:44:44

代码语言:javascript
复制
$ 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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36073678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档