awk-split和concatenate在一行输出中有额外的空间



下面的awk生成具有所有行splitcurrent output。然而,第一行似乎有一个空格,我似乎不明白为什么。不确定这是否是最好的方法,但它会产生接近正确的输出。谢谢:)。

awk

awk '{split($6,a,":"); print $1":",$2,$3,a[1],a[2],a[6],a[7]} {split($7,a,":"); print $1":"$2,$3,a[1],a[2],a[6],a[7]} {split($8,a,":"); print $1":"$2,$3,a[1],a[2],a[6],a[7]} {split($9,a,":"); print $1":"$2,$3,a[1],a[2],a[6],a[7]} {split($10,a,":"); print $1":"$2,$3,a[1],a[2],a[6],a[7]}' input > parse

输入文件(制表符分隔)

chr1    13408   C   1   =:0:0.00:0.00:0.00:0:0:0.00:0.00:0.00:0:0.00:0.00:0.00  A:0:0.00:0.00:0.00:0:0:0.00:0.00:0.00:0:0.00:0.00:0.00  C:1:2.00:28.00:2.00:0:1:0.00:0.02:0.00:0:0.00:0.00:0.00 G:0:0.00:0.00:0.00:0:0:0.00:0.00:0.00:0:0.00:0.00:0.00  T:0:0.00:0.00:0.00:0:0:0.00:0.00:0.00:0:0.00:0.00:0.00  N:0:0.00:0.00:0.00:0:0:0.00:0.00:0.00:0:0.00:0.00:0.00

当前输出(解析)

chr1: 13408 C A 0 0 0 (has a space between `chr1:` and `13408`)
chr1:13408 C C 1 0 1
chr1:13408 C G 0 0 0
chr1:13408 C T 0 0 0
chr1:13408 C N 0 0 0

所需输出

chr1:13408 C A 0 0 0 (has no space between `chr1:` and `13408`)
chr1:13408 C C 1 0 1
chr1:13408 C G 0 0 0
chr1:13408 C T 0 0 0
chr1:13408 C N 0 0 0

您告诉awk在您的第一个print语句中使用第一个,打印空间。更改

print $1":",$2

print $1":"$2

就像您在第二个print语句中已经有的一样,所以您不会在:$2之间打印OFS值(默认情况下是一个空格)。

最新更新