从文件中的列中提取单个信息

从文件中的列中提取单个信息

我有一个包含制表符分隔字段的文件,格式如下:

2-micron    251 1523    R0010W  .   +   SGD gene    .   ID=R0010W;Name=R0010W;gene=FLP1;Alias=FLP1;Ontology_term=GO:0003690,GO:0003697,GO:0005575,GO:0008301,GO:0009009,GO:0042150;Note=Site-specific%20recombinase%20encoded%20on%20the%202-micron%20plasmid%2C%20required%20for%202-micron%20plasmid%20propagation%20as%20part%20of%20a%20plasmid%20amplification%20system%20that%20compensates%20for%20any%20copy%20number%20decreases%20caused%20by%20missegregation%20events;dbxref=SGD:S000029654;orf_classification=Verified  0

我需要提取 2 列(第四列和最后一列),我已经成功完成了。但我还需要从包含更多详细信息的列中提取特定信息。例如,我需要gene=foo从第10列中提取。

所以,在结果中我想要第4列,第10列和最后一列的基因信息,总共3列。我怎么做 ?

答案1

这是 Perl 的方式:

$ perl -lane '$F[9]=~s/.*(gene=.+?;).*/$1/; print "$F[3]\t$F[9]\t$F[$#F]"' file
R0010W  gene=FLP1;  0

启用-a空白处的自动字段分割,将字段保存在数组中@F。这适用于空格和制表符。向每个调用添加一个换行符,并应用-l给定的脚本逐行读取输入文件。print()-n-e

该脚本将删除第 10 个字段中的所有内容(数组从 0 开始,因此第 10 个字段是$F[9]),gene=直到第 1 个字段除外;。然后,打印第四个、最后一个以及第十个中剩下的内容。

相关内容