Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 使用sed/awk/grep从.gff文件中提取子字符串_Linux_Shell_Sed_Grep - Fatal编程技术网

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

Linux 使用sed/awk/grep从.gff文件中提取子字符串,linux,shell,sed,grep,Linux,Shell,Sed,Grep,我有一个包含多行的文件,如下所示: 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_00001 product=hypothetical pr

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

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_00001 product=hypothetical protein
我想提取ID=PROKKA_uka[whatever number]和'product='之后的所有内容,以获得如下输出:

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_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

如果您希望结果在同一行中,请使用
grep+paste

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

您可以使用
grep-oE

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

如果您希望结果在同一行中,请使用
grep+paste

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

太好了!!!我添加了一个|粘贴--以便每行有一个结果(ID+product)。非常感谢。太好了!!!我添加了一个|粘贴--以便每行有一个结果(ID+product)。非常感谢。哎呀,你忘了发代码了。StackOverflow是关于帮助人们修复代码的。它不是一个免费的编码服务。有代码总比没有代码好。即使您不知道如何编写程序,元代码也会演示您认为程序应该如何工作。考虑到您包含的标记,我希望在您的问题中看到shell和sed代码。我投票决定结束这个问题,因为到目前为止没有你的工作,StackOverflow的主题已经偏离了。@ghoti,Updatedops,你忘记发布代码了。StackOverflow是关于帮助人们修复代码的。它不是一个免费的编码服务。有代码总比没有代码好。即使您不知道如何编写程序,元代码也会演示您认为程序应该如何工作。考虑到您包含的标记,我希望在您的问题中看到shell和sed代码。我投票决定结束这个问题,因为到目前为止没有你的工作,StackOverflow的主题已经偏离了。@ghoti gotcha,更新