vcfファイルから特定のパターンの後の残りの各行を削除する方法は?

vcfファイルから特定のパターンの後の残りの各行を削除する方法は?

: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に、私はすでにそれを言及しました。

関連情報