sedコマンドに数字を指定する必要があります。

sedコマンドに数字を指定する必要があります。

以下のファスタファイルがあります。

>accessory/4745/24/lake_sample_pv_strain_LH201_chromosome_Gene2509
ATGCTAG
>accessory/95/89.78/lake_sample_pv_strain_LH201_Gene125
TAGTCT

fastaヘッダーから文字を削除する必要があるため、accessory/numericals/numericals/次のコマンドを使用しましたが、目的を達成できませんでした。

sed 's/accessory[/][0-9][/][0-9]//g' accessory.fasta

予想される出力は次のとおりです。

>lake_sample_pv_strain_LH201_chromosome_Gene2509
ATGCTAG
>lake_sample_pv_strain_LH201_Gene125
TAGTCT

この問題を解決するのに役立ちます。よろしくお願いします。

ベストアンサー1

accessory/あなたの正規表現は「次を探しています。数字[0-9])の後に/「があるとファイルには表示されません。検索したい項目は次のとおりです。1つ以上の数字.、そして数字ではないことを許可しようとしています。したがって、オリジナルと同じロジックを使用すると、次のようなものが欲しいでしょう。

$ sed -E 's/accessory[/][0-9.]+[/][0-9.]+[/]//' accessory.fasta
>lake_sample_pv_strain_LH201_chromosome_Gene2509
ATGCTAG
>lake_sample_pv_strain_LH201_Gene125
TAGTCT

g1行に1つの一致のみがあるため、ここでは修飾子を使用しなかったため、修飾子を使用しませんでした。

しかし、これは不要な制限です。ファイルがあなたのファイルのように見える場合は、最後の行まですべてを削除してください/

$ sed -E 's|>.*/|>|' accessory.fasta 
>lake_sample_pv_strain_LH201_chromosome_Gene2509
ATGCTAG
>lake_sample_pv_strain_LH201_Gene125
TAGTCT

このs///演算子は、すべての文字を区切り文字として使用できます。これで一致する必要があることがわかったので、脱出する必要は/ありません。s|||/

元のように制限する必要がある場合は、次のように単純化できます。

$ sed -E 's|accessory/[0-9.]+/[0-9.]+/||' accessory.fasta 
>lake_sample_pv_strain_LH201_chromosome_Gene2509
ATGCTAG
>lake_sample_pv_strain_LH201_Gene125
TAGTCT

おすすめ記事