首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gawk根据第二列的一部分创建第一列

gawk根据第二列的一部分创建第一列
EN

Stack Overflow用户
提问于 2016-04-27 19:02:57
回答 1查看 24关注 0票数 1

我有一个2列tsv,我需要使用第2列中的部分值插入一个新的第一列。

我所拥有的:

代码语言:javascript
复制
fastq/D0110.L001_R1_001.fastq  fastq/D0110.L001_R2_001.fastq
fastq/D0206.L001_R1_001.fastq  fastq/D0206.L001_R2_001.fastq
fastq/D0208.L001_R1_001.fastq  fastq/D0208.L001_R2_001.fastq

我想要的:

代码语言:javascript
复制
D0110    fastq/D0110.L001_R1_001.fastq  fastq/D0110.L001_R2_001.fastq
D0206    fastq/D0206.L001_R1_001.fastq  fastq/D0206.L001_R2_001.fastq
D0208    fastq/D0208.L001_R1_001.fastq  fastq/D0208.L001_R2_001.fastq

我想把"fastq/“和第一个句号之间的所有东西都打印出来,作为新的第一栏。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-27 19:47:55

代码语言:javascript
复制
$ awk -F'[/.]' '{printf "%s\t%s\n",$2,$0}' file
D0110   fastq/D0110.L001_R1_001.fastq   fastq/D0110.L001_R2_001.fastq
D0206   fastq/D0206.L001_R1_001.fastq   fastq/D0206.L001_R2_001.fastq
D0208   fastq/D0208.L001_R1_001.fastq   fastq/D0208.L001_R2_001.fastq

它是如何工作的

awk在所有输入行上隐式循环。

  • -F'[/.]' 这告诉awk使用任何出现的/.作为字段分隔符。这意味着,对于您的输入,您要查找的字符串将是第二个字段。
  • printf "%s\t%s\n",$2,$0 这告诉awk打印第二个字段($2),后面是制表符(\t),后面是输入行($0),后面是换行符(\n)。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36898717

复制
相关文章

相似问题

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