Text-Processing
刪除許多文件上的變數字元串
我有許多包含類似字元串的文件:
>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
子目錄中的新文件。