好的,我在 SO 上找到了类似的答案,但是我的 sed / grep / awk fu 太差了,以至于我无法完全适应我的任务。也就是说,给定这个文件“test.gff”:
accn|CP014704 RefSeq CDS 403 915 . + 0 ID=AZ909_00020;locus_tag=AZ909_00020;product=transcriptional regulator
accn|CP014704 RefSeq CDS 928 2334 . + 0 ID=AZ909_00025;locus_tag=AZ909_00025;product=FAD/NAD(P)-binding oxidoreductase
accn|CP014704 RefSeq CDS 31437 32681 . + 0 ID=AZ909_00145;locus_tag=AZ909_00145;product=gamma-glutamyl-phosphate reductase;gene=proA
accn|CP014704 RefSeq CDS 2355 2585 . + 0 ID=AZ909_00030;locus_tag=AZ909_00030;product=hypothetical protein
我想提取两个值1)“ID =”右侧的文本到分号和2)“product =”右侧的文本到行尾或分号(因为您可以看到其中一个这些线条也有一个“gene=”值。
所以我想要这样的东西:
ID product
AZ909_00020 transcriptional regulator
AZ909_00025 FAD/NAD(P)-binding oxidoreductase
AZ909_00145 gamma-glutamyl-phosphate reductase
据我所知:
printf "ID\tproduct\n"
sed -nr 's/^.*ID=(.*);.*product=(.*);/\1\t\2\p/' test.gff
谢谢!