
如何:
從 vcf 檔案中的每一行中刪除符號後的數字。例子:
0|0:0.81 0|1:0.81 0|0:0.76 0|0:0.83
0|1:0.99 0|0:0.03 0|0:0.83 0|0:0.2
輸出應該是:
0|0 0|1 0|0 0|0
0|1 0|0 0|0 0|0
我已經嘗試過以下操作,但它會刪除第一個之後的所有內容:
sed 's/[:].*$//' file.vcf
答案1
您想要從 中刪除:
,然後直接刪除盡可能多的數字或點字元:
$ sed 's/:[0-9.]*//g' file.vcf
0|0 0|1 0|0 0|0
0|1 0|0 0|0 0|0
您還需要g
在最後重複替換每行上的所有匹配子字串。
你的命令,
sed 's/[:].*$//' file.vcf
將匹配第一個:
字符,然後到行尾任意數量的字符。這就是為什麼你最終會得到
0|0
0|1
作為輸出。
這個和我建議的表達式之間的區別是.
(匹配任何單個字元),我將其更改為[0-9.]
限制我們實際要刪除的字元集。我們也無法將模式錨定到行尾,$
因為我們還需要刪除行中間的內容。最後g
,但我已經提過。