如何使用 awk 用冒号连接多列?

如何使用 awk 用冒号连接多列?

我有一个这样的文件:

head 1kG_MDS6.bim
1   rs2073813   0   753541  A   G
1   rs60320384  0   769223  G   C
1   rs59066358  0   771967  A   G
...

我想连接第一、第四、第六和第五列(按顺序),并用“:”分隔

所以输出看起来像这样:

1:753541:G:A
1:769223:C:G
1:771967:G:A

我试过这个:

awk ' { print $1 $4 $6 $5 ":" $NF } ' 1kG_MDS6.bim > 1kG_MDS6_SNPs1.txt

但它仅与最后两列“:”连接

答案1

使用输出字段分隔符。

awk 'BEGIN{OFS=":"} {print $1,$4,$6,$5}' file

输出:

1:753541:G:A
1:769223:C:G
1:771967:G:A

答案2

使用 printf

awk ' { printf "%s:%s:%s:%s\n",$1,$4,$6,$5; } ' 

在哪里

  • %s 将被匹配的参数替换为字符串。
  • \n 将为每个已处理的行添加换行符

相关内容