2 文字間のパターンを置き換える

2 文字間のパターンを置き換える
Staphylococcus_sp_HMSC14C01-KV792037.1:0.00371647154267842634,Staphylococcus_hominis_VCU122-AHLD01000058.1:0.00124439639436691308)69:0.00227646100249620856,(Staphylococcus_sp_HMSC072E01-KV814990.1:0.00288325234399461859,(((Staphylococcus_hominis_793_SHAE-JUSR01000051.1:0.00594391769091206796,Staphylococcus_pettenkoferi_1286_SHAE-JVVL01000037.1:0.00594050248317441135)

カンマは異なる項目を区別し、各項目からその間のすべての項目を削除します-:-:

どうすればいいですか?したがって、次のようにする必要があります。

Staphylococcus_sp_HMSC14C01:0.00371647154267842634,Staphylococcus_hominis_VCU122:0.00124439639436691308)69:0.00227646100249620856

を使用しましたが、sed 's/-.*://' 1.file > 2.file最終的にファイル全体を削除し、最初の値と最後の値のみを保持しました。

ベストアンサー1

.*以下に一致する貪欲な正規表現です。最長可能な一致。最短の一致を一致させる必要がありますが、行全体で完全に一致する必要があります。努力する

sed 's/-[^:-]*:/:/g' 1.file > 2.file

文字クラスは[^:-]何でも一致します。とは別にコロンとダッシュ(コロンを除くすべての項目と一致する必要があるかもしれません)、したがって正規表現は「ダッシュの後にダッシュではなく、コロン以外の文字が続き、その後にコロンが続きます」を意味します。その後、それをコロンで置き換え(維持したいので)、その行gでグローバル置換(末尾)を実行します。省略すると、g最初のインスタンスのみが置き換えられます。

おすすめ記事