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

出力として。

これと私が提案した表現の違いは、.(任意の 1 文字に一致する) です。これを に変更したのは、実際に削除する文字セットを制限するためです。また、行の途中にあるものも削除する必要があるため、[0-9.]パターンを で行末に固定することもできません。また、末尾の についても、すでに説明しました。$g

関連情報