在处理生物信息学数据的过程中,有时会遇到这样的需求,需要从一个文件中剔除一部分满足条件的行,举例来说,在文件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处理生物信息学数据的效率要高很多很多倍。