以下のファスタファイルがあります。
>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
g
1行に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