簡體   English   中英

從.gff文件中使用sed / awk / grep提取子字符串

[英]Extract substring with sed/awk/grep from .gff file

我有一個包含多行的文件,如下所示:

NODE_1_length   Prodigal:2.6    CDS     11      274     .       +       0       ID=PROKKA_00001;inference=ab initio prediction:Prodigal:2.6;locus_tag=PROKKA_00001;product=hypothetical protein

我想提取ID = PROKKA_ [任何數字]和'product ='之后的所有內容,以獲得如下輸出:

ID=PROKKA_00001 product=hypothetical protein

我在使用sed方面不是很熟練,因此我嘗試調整一些在這里和周圍找到的解決方案,但沒有成功。 如果解決方案分兩個步驟(一個用於ID,一個用於產品),也可以,那么我可以將兩個結果合並到一個文件中。

如果您能說明所用的正則表達式,將不勝感激。

到目前為止,我嘗試將問題一分為二(從ID出發)並嘗試:

grep -o 'ID=PROKKA_[0-9]{1,5}*'
sed 's/^ID=PROKKA[0-9]*;//g/
grep -Po 'ID="K[^"]*'

但當然他們都不起作用。 感謝您的幫助!

您可以使用grep -oE

grep -oE 'ID=PROKKA_[0-9]+|product=[^;:]+' file

ID=PROKKA_00001
product=hypothetical protein

如果要在同一行中顯示結果,請使用grep + paste

grep -oE 'ID=PROKKA_[0-9]+|product=[^;:]+' file | paste -s

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM