我有一个包含大量蛋白质序列的文件。每个序列都以一个初始的“蛋白质ID号”(已知的GI号)开头。我正在使用一个awk命令,它允许我在两个正则表达式之间打印。使用它,我可以在一个正则表达式字段中输入一个GI编号列表,其中每个GI编号由"|“分隔。第二个正则表达式是我在每个蛋白质之后添加的正则表达式,它允许我执行awk功能(ABC123)。因此,我使用的代码如下
awk '/GI1|GI2|GI3|GI4|GIX.../,/ABC123/' database.txt > output.txt
正如您从上面的代码中看到的,我正在database.txt中搜索并编写一个新文件。问题是,当我打开output.txt时,GI列表的顺序是错误的。在output.txt中,我需要它们出现的顺序与它们出现在第一个正则表达式字段中的顺序相同
GI1
GI2
GI3...
相反,它们以在database.txt中发现的顺序出现,因此在output.txt中它们看起来都是杂乱无章的。
Gi3
GI4
GI1
GI2
GI5
有人知道如何在输出文件中获得与我在第一个regex字段中输入的GIs列表相同的顺序吗?
发布于 2014-04-01 00:34:07
尝试此命令,
awk '/GI1|GI2|GI3|GI4|GIX.../,/ABC123/' database.txt | sort -k1.3,1.3 > output.txt
现在,您的output.txt包含排序后的列表。
规范1.3、1.3规定排序关键字必须从字段1位置3开始,并在同一位置结束。
https://stackoverflow.com/questions/22762195
复制相似问题