2013-10-21 59 views
0

我有一個問題,請你能幫助我嗎? 我有.txt文件我使用awk代碼來使用製表符分隔函數分隔列。 我收到對齊列,但是如果缺少一些信息,則整行將向左轉,並且信息會轉移到另一列。請你能幫助我嗎?我怎麼能 納入這個代碼?謝謝你這麼多..單元之間的AWK間隙

#!/bin/bash 

for f 
in *.vcf; 
do awk 'BEGIN {OFS = "\t"} 
     /^##/ {next} 
     /^#/ {sub(/^#/,"",$1)} 
     {$1=$1; print} 
    ' "$f" > "${f/%vcf/tsv}" 
done 


> INPUT: 
> 
> CHROM ID REF ALT 
    chr1 235  A  B 
    chr2  A  B 
    chr3 225  B 

OUTPUT:

CHROM ID REF ALT 
    chr1 235 A  B 
    chr2  .  A  B 
    chr3 225 .  B 
+1

列是如何對齊的?你能發佈樣本數據嗎? –

+0

您可以檢查字段數(NF)是否等於預期值,否則跳過該行。 –

+0

btw,腳本來自http://stackoverflow.com/a/19451399/1983854 – fedorqui

回答

2

問題包含歧義。縱觀數據:

chr1 235  A  B 
chr2  A  B 
chr3 225  B 

也許chr2行中,我們可以猜測ID列缺,因爲ID s爲數字。我們錯過了一列,它是數字,所以它必須是ID

但在第三行中,我們如何知道REF列已丟失,而不是​​?如果​​永遠不會丟失,那很簡單。但是,如果任何一方都可能失蹤,這可能是不可能的。

在任何情況下,在編寫程序代碼以將數據重新歸一化爲正確的列之前,必須能夠明確規定識別哪些列丟失的規則,否則認識到這是不可能的並放棄。

您可能只需要上游並找到沒有冗餘列的相同數據的更好來源。

+0

ALT永遠不會丟失 – Vonton

相關問題