Text-Processing

刪除許多文件上的變數字元串

  • August 1, 2018

我有許多包含類似字元串的文件:

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

我需要這樣的輸出:

>Pseudomomas_etcetera1
texttexttext
>Pseudomomas_etcetera2
texttexttext
>Pseudomomas_etcetera3
texttexttext

很確定有一個簡單的 sed 解決方案,我似乎無法弄清楚

注意:字元始終是五個數字,後跟一個下劃線,後跟 Pseudomonas_etcetera。該字元串始終位於其行首,並且始終以“>”開頭。所有文件都有一個“.sorted”副檔名。

sed可以:

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

如果您的模式完全有問題:

sed -E 's/([0-9]+_)//' files
  • -E使用擴展的正則表達式
  • ([0-9]+_)(\w+)定義了兩個Word Pattern區域,您可以使用*\1\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

這將遍歷與 pattern 匹配的所有文件名*.sorted,並為每個文件執行一個簡短的sed腳本。

sed腳本將定位所有以數字後跟下劃線開頭的 Fasta 標頭。當它找到一個時,它將只用標題標記替換標題標記、數字和下劃線>

結果將寫入fixed子目錄中的新文件。

引用自:https://unix.stackexchange.com/questions/459744