2016-05-14 5 views
0

以下のawkは、すべての行がsplitcurrent outputを生成します。しかし、最初の行にはスペースがあるように見えますが、その理由を理解できないようです。これが最善の方法であるかどうかは分かりませんが、正しい出力に近い出力が得られます。ありがとうございました :)。awk分割と連結は、1行の出力に余分なスペースを持っています

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 
+0

ありがとう、私は気づいていない...ありがとう:)。 – Chris

答えて

2

Youreのあなたの最初のprint文の最初の,でスペースを印刷するにはawkを伝えます。あなたは:$2間に印刷OFS値(デフォルトはスペース)を得ることはありませんので、あなたはすでに2番目のprint文で持っているよう

print $1":",$2 

print $1":"$2 

に変更します。

関連する問題