[英]using sed/awk to fix a malformed file
我有一個格式錯誤的變體調用文件,我正在嘗試修復。 我一直在嘗試找出一種解決方法,但遇到了一些麻煩。 這是該文件的一個片段:
##fileformat=VCFv4.1
##fileDate=20151024
##INFO=<ID=ALT,Number=1,Type=String,Description="Allele B">
##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype">
#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT D00270
1 167945 . C . . ALT=T GT 0/0
1 290868 . G T . . ALT=T GT 0/1
1 700273 . A C . . ALT=C GT 0/1
1 744314 . G A . . ALT=A GT 1/0
1 765121 . A G . . ALT=G GT 0/1
1 1047386 . G A . . ALT=A GT 1/0
1 1113115 . T C . . ALT=C GT 1/0
1 1623724 . G . . ALT=A GT 0/0
1 1627611 . G . . ALT=C GT 0/0
1 1664597 . T C . . ALT=C GT 1/1
1 1670775 . T C . . ALT=C GT 1/1
在某些情況下,ALT列中沒有任何內容,但為了使文件正確形成並在下游分析中很有用,需要這樣做。 ALT列中的數據應該在INFO列中ALT =的右側。 如何用INFO列中等號右邊的字母替換ALT列中的空白數據? 理想的輸出如下所示:
##fileformat=VCFv4.1
##fileDate=20151024
##INFO=<ID=ALT,Number=1,Type=String,Description="Allele B">
##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype">
#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT D00270
1 167945 . C T . . ALT=T GT 0/0
1 290868 . G T . . ALT=T GT 0/1
1 700273 . A C . . ALT=C GT 0/1
1 744314 . G A . . ALT=A GT 1/0
1 765121 . A G . . ALT=G GT 0/1
1 1047386 . G A . . ALT=A GT 1/0
1 1113115 . T C . . ALT=C GT 1/0
1 1623724 . G A . . ALT=A GT 0/0
1 1627611 . G C . . ALT=C GT 0/0
1 1664597 . T C . . ALT=C GT 1/1
1 1670775 . T C . . ALT=C GT 1/1
感謝您提出的任何建議。 如果有幫助,則用制表符分隔文件。
你可以試試,
awk -vOFS="\t" '
NF==9 && $0 !~ /^#/ {
split($7,a,"="); #extract base from column 7
$4=$4"\t"a[2]; #Adding column
}
$0 !~ /^##/ {$1=$1;} #recompile $0 with output field separator
1' file #print
你得到,
##fileformat=VCFv4.1
##fileDate=20151024
##INFO=<ID=ALT,Number=1,Type=String,Description="Allele B">
##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype">
#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT D00270
1 167945 . C T . . ALT=T GT 0/0
1 290868 . G T . . ALT=T GT 0/1
1 700273 . A C . . ALT=C GT 0/1
1 744314 . G A . . ALT=A GT 1/0
1 765121 . A G . . ALT=G GT 0/1
1 1047386 . G A . . ALT=A GT 1/0
1 1113115 . T C . . ALT=C GT 1/0
1 1623724 . G A . . ALT=A GT 0/0
1 1627611 . G C . . ALT=C GT 0/0
1 1664597 . T C . . ALT=C GT 1/1
1 1670775 . T C . . ALT=C GT 1/1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.