【问题标题】:awk split and concatenate has extra space in one line of outputawk split and concatenate 在一行输出中有额外的空间
【发布时间】:2016-05-15 02:06:19
【问题描述】:

下面的awk 生成current output 以及所有split 行。然而,第一行似乎有一个空格,我似乎不知道为什么。不确定这是否是最好的方法,但它产生的输出接近正确。谢谢你:)。

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


【解决方案1】:

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

print $1":",$2

print $1":"$2

就像您在第二个打印语句中已有的一样,因此您不会在:$2 之间打印OFS 值(默认为空格)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-21
    • 1970-01-01
    • 2022-11-05
    • 2015-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    相关资源
    最近更新 更多