使用命令行工具求文本的行补集

在处理生物信息学数据的过程中,有时会遇到这样的需求,需要从一个文件中剔除一部分满足条件的行,举例来说,在文件test中有很多的id,每行一个,我们希望把这些id中有重复的那些都彻底的除去,一个不留。这至少有两种办法,可以在完全不写程序的条件下来完成。

方法一:如果你不想要这些有重复的id的列表,那么

cat test | cut -f 2 | sort | uniq -u

就可以了,这里假设了我们的id都是在文件的第二列,并且文件是用t分割的文本。

方法二:如果你的文本稍微有那么点复杂,并且你想要的不仅是id的话,那么就得多费一道手续

cat test | cut -f 2 | sort | uniq -d > multi.ids
cat test | grep -vf multi.ids > test_nomulti

两行命令也足够了。

总之,这类工作是不必动用perl,awk等等”重型”装备的。

额,对了,如果你还在Windows里纠结的话,那么欢迎你切换到UNIX或者Linux环境吧,这比Windows处理生物信息学数据的效率要高很多很多倍。

此条目发表在生物信息学分类目录。将固定链接加入收藏夹。