gawk 根据第二列的一部分创建第一列
gawk to create first column based on part of second column
我有一个 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/" 和第一个句点之间的所有内容,并将其打印为新的第一列。
$ awk -F'[/.]' '{printf "%s\t%s\n",,[=10=]}' 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",,[=14=]
这告诉 awk 打印第二个字段 (</code>),然后是制表符 (<code>\t
),然后是输入行 ([=17=]
),然后是换行符字符 (\n
)
我有一个 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/" 和第一个句点之间的所有内容,并将其打印为新的第一列。
$ awk -F'[/.]' '{printf "%s\t%s\n",,[=10=]}' 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",,[=14=]
这告诉 awk 打印第二个字段 (
</code>),然后是制表符 (<code>\t
),然后是输入行 ([=17=]
),然后是换行符字符 (\n
)