首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用awk将重复的一组行转换为列

如何使用awk将重复的一组行转换为列
EN

Stack Overflow用户
提问于 2018-04-03 02:48:19
回答 2查看 271关注 0票数 2

我有一个文本文件,其中有7列的数据,格式如下:

代码语言:javascript
复制
18030   AAJ51   FTO rs9939609   C__30090620_10  A   T
18030   AAJ51   CAT rs1001179   C__11468118_10  C   C
18030   AAJ51   CCL2    rs1024611   C___2590362_10  G   G
18030   AAJ51   TAS2R38 rs10246939  C___9506826_10  C   C
20287   AAJ51   FTO rs9939609   C__30090620_10  A   T
20287   AAJ51   CAT rs1001179   C__11468118_10  C   C
20287   AAJ51   CCL2    rs1024611   C___2590362_10  A   G
20287   AAJ51   TAS2R38 rs10246939  C___9506826_10  T   T

第二、第三、第四和第五栏是常数和重复。

变量为第1列、第6列和第7列。

我想以这样的方式把数据转过来:

代码语言:javascript
复制
        FTO       CAT       CCL2        TAS2R38
        rs9939609 rs1001179 rs1024611   rs10246939
18030   AT        CC        GG          AT
20287   AT        CC        AG          TT

虽然示例显示每个ID有4行(第一列中的5位数是ID),但实际文件每个ID有128行,因此执行匹配或正则表达式是不实际的,并且更倾向于对多行进行迭代的方法。

我在converting n number of rows上看到了这个例子,但不确定如何修改这个应用程序。

更新: CRLF结尾可能导致格式化问题,可以使用像dos2unix这样的工具解决这些问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-03 07:22:15

GNU Awk解决方案:

代码语言:javascript
复制
awk '{ 
         if (!keys[$3]++) { b[++c] = $3; row1 = row1 OFS $3; row2 = row2 OFS $4 }
         line = groups[$1][$3];
         groups[$1][$3] = (line == ""? $6$7: line OFS $6$7) 
     }
     END{ 
         print row1 ORS row2; 
         for (i in groups) {
             r = i; 
             for (j in b) r = r OFS groups[i][b[j]];
             print r 
         } 
     }' OFS='\t' file | column -txn

产出:

代码语言:javascript
复制
       FTO        CAT        CCL2       TAS2R38
       rs9939609  rs1001179  rs1024611  rs10246939
18030  AT         CC         GG         CC
20287  AT         CC         AG         TT
票数 3
EN

Stack Overflow用户

发布于 2018-04-03 03:23:22

尝试使用last_seen变量和数组。

  1. 当last_seen变量发生变化时,将数组作为一行输出。
  2. 将当前行的值存储在数组中。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49621457

复制
相关文章

相似问题

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