我有一个2列的tsv,我需要使用第2列中的部分值插入新的第一列。
我有什么:
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
我想要的是什么:
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 /"和第一个时期并打印出新的第一列。
答案 0 :(得分:1)
$ 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
)