Text-Processing

如何刪除文件中每次出現的“>”和“細菌”一詞之間的部分?

  • April 6, 2022

我想刪除文件中每次出現的the>和 word之間的部分。Bacteria

  • 這是輸入的範例:
>AADV02000003.105686.107093 Bacteria;Cyanobacteria;Cyanobacteriia;Cyanobacteriales;
  • 結果應如下所示:
>Bacteria;Cyanobacteria;Cyanobacteriia;Cyanobacteriales;

這是一個 FASTA 文件(仿生資訊學中的一種常見文件格式),因此>始終是該行中的第一個非空白字元,並且該行中只有一個這樣的字元。

我正在考慮使用sed,但我不確定如何設置命令。感謝您的幫助。

假設這是一個 fasta 文件,具有多個標題和序列行,其中標題以 a 開頭,>並且>只能作為行的第一個非空白字元出現,您可以執行以下操作:

sed 's/^ *>[^ ]* />/' file.fa 

這將查找以 0 個或多個空格開頭然後是 a>的行,並將從行的開頭、到>和直到第一個空格的所有內容替換為>,有效地刪除第一個空格之前的所有內容。

要編輯原始文件而不是將其列印到標準輸出,請使用:

sed -i.bak 's/^ *>[^ ]* />/' file.fa 

這將創建一個名為的文件,該文件file.fa.bak將是原始文件的副本。

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