多くのファイルから変数文字列を削除する

多くのファイルから変数文字列を削除する

次の文字列を含むファイルがたくさんあります。

>33100_Pseudomonas_etcetera1
texttexttext
>33632_Pseudomonas_etcetera2
texttexttext
>36406_Pseudomonas_etcetera3
texttexttext

次の出力が必要です。

>Pseudomomas_etcetera1
texttexttext
>Pseudomomas_etcetera2
texttexttext
>Pseudomomas_etcetera3
texttexttext

単純なsedソリューションがあると確信していますが、理解できないようです。

注:文字は常に5桁の数字で、その後に下線、疑似モナスなどが続きます。文字列は常にその行の先頭にあり、常に「>」で始まります。すべてのファイルには「.sorted」拡張子があります。

答え1

sedできる:

sed -E 's/>([0-9]+_)(\w+)/>\2/' files

パターンにまったく問題がある場合:

sed -E 's/([0-9]+_)//' files
  • -E拡張正規表現の使用
  • ([0-9]+_)(\w+)2つの定義フォントあなたがそれらを訪問する地域\1そして\2

答え2

Standardを使用しsed、すべてのファイルが現在ディレクトリにあるとします。

mkdir fixed || exit 1   # exits if the output directory already exists
for filename in *.sorted; do
    sed '/^>[0-9]*_/s//>/' "$filename" >"fixed/$filename"
done

その後、パターンに一致するすべてのファイル名を繰り返し、*.sorted各ファイル名に対して短いsedスクリプトを実行します。

スクリプトsedは、数字と下線で始まるすべてのFastaヘッダーを探します。 1つを見つけたら、タイトルタグ、数字、および下線をタイトルタグに置き換えます>

fixed結果はサブディレクトリの新しいファイルに書き込まれます。

答え3

[OPが書いた]単純なsedソリューションがあることは確かですが、理解できないようです。

いいですね。

[OPが書いた]注:文字は常に5桁の数字で、その後にアンダースコア、Pseudomonas_etceteraが続きます。文字列は常にその行の先頭にあり、常に「>」で始まります。すべてのファイルには「.sorted」拡張子があります。

pbmステートメントの説明はコードに効率的に変換できるため、非常に正確ですsed。それだけです:

  • 文字列は常に行の先頭にあり、常に ">"で始まります。regex =>/^>/
  • 文字は常に5つの数字です:regex =>/^>[0-9][0-9][0-9][0-9][0-9]/
  • その後にアンダースコアが続き、その後に「Pseudomonas_etcetera」が続きます。regex =>/^>[0-9][0-9][0-9][0-9][0-9]_Pseudomonas_etcetera/
  • の置換コマンドの基本構文はsed次のとおりです。これは、正規表現(コマンドの前)s/regex/rpl_str/と一致するパターン空間(通常は現在の行、レコードとも呼ばれる)のすべての部分がコマンドの。LHSs///RHSs///
  • したがって、交換を実行するコマンドは次のようになります。
  • sed -e 's/^>[0-9][0-9][0-9][0-9][0-9]_Pseudomonas_etcetera/>Pseudomonas_etcetera/' inp1.sorted
  • 免責事項:テストされていません。

関連情報