“ 每个Linux老鸟都知道,在Linux中 一切皆文件 ,那么对于文件的处理就至关重要,所以我们今天开始学习Linux的文本处理三剑客。”
无论是刚刚接触Linux的人,还是已经对Linux略有了解的人都会常常有这样的需求产生,我现在有一个文本(由ps cat ls ...或者管道传过来的)需要进行处理,需要删除包含特定元素的行,需要查找包含特定元素的行输出,或者替换某些字符到另外的字符等等··· ···
此外,在生物信息学当中,也会有很多的数据包含了自己不需要的行或者文件开头或者结尾有注释行需要删除,但是文件可能好几个G,使用Vim删除打开就很麻烦等等··· ···
诸如此类的需求,都将从今天开始,对你来说,不再是一个难题!
1 三剑客之三 grep
grep命令应该是大家接触Linux比较早就可以接触到了命令了,因为grep使用非常简单,可以快速的查找到我们想要的特定行,并且还具有计数功能,结合其它的基本处理命令也可以完成复杂的文本处理操作。
grep:用于查找文件里符合条件的字符串。
本期先给出一个简单的小案例来让大家看看grep的魅力,后面会用特定的一期来讲解grep的重要参数和使用。
注:grep 和 sort uniq cut等共同食用更佳哦!
# 切换到/dev目录
cd /dev
# 查看文件 我们可以发现这个目录下有非常多的文件
ls -l
# 查找名字包含 null的文件
ls -l | grep null
# 结果
# crw-rw-rw- 1 root root 1, 3 Sep 7 11:21 null
上面就是一个简单的grep的小例子,我们常常在一个包含很多文件夹下查找一个模糊名字的文件,那么grep就是你最好的选择!
2 三剑客之二 sed
当你使用过了grep以后,你也许会想,我现在不只是想查找一个特定文本行了,我现在想要对文本行进行删除,或者我想对文本行进行替换,那我应该怎么做呢?
不要着急,如果说grep是查找界的明星,那sed就是替换界的巨星,当然它在查找的能力上也完全不输grep,甚至在复杂查找的情况下完爆grep!
sed:表示 Stream Editor,翻译过来就是流编辑器,它可以执行各种功能,如搜索、查找、修改、插入或删除文件。
sed的使用比较复杂,但是不用着急,我后面会通过2-3期的推文来对sed的常用参数来进行讲解,并且配以练习和习题解答,让你真正的学会如何使用sed进行文件处理,达到你自己的标准。
下面给两个简单的案例,
案例一,删除开头包含#的行
# 复制一份待处理的文件
cp /bin/zipgrep .
# 查看这个文件的内容 我们可以看到很多的#开头的行
cat zipgrep
# 删除开头包含#的行 并且替换原来的文件
sed -i -e '/^ \{0,\}#/d' zipgrep
# 再次查看文件
cat zipgrep
案例二,在文件的最后一行后添加新行,内容为 Hello world!
# 添加新行
sed -i -e '$aHello world!' zipgrep
# 查看文件
cat zipgrep
# 我们可以看到文件末尾多了一个新行
上面的命令不需要看懂,只需要你体验一下sed的魅力即可,后面会有详细讲解,让你可以根据自己的需要去定制属于你自己的sed的功能。
3 三剑客之首 awk
说完了sed,我们最后再来说说三剑客之首,awk。awk其实已经不能说是一个简单的命令了,它其实都可以作为一门语言而存在了,awk具有一门语言该有的基本语句,包括循环和判断等等。但是每当提到awk的时候,大家都会提起perl语言,因为awk能做到了perl也可以做到,awk做不到的perl还可以做到,那么我们为什么还要学习awk呢?
我自己的理由有三点,首先,awk在做基本文本处理的能力上优于perl语言,而且简单容易写(相对于perl),其次,awk的速度优于perl语言,这个我经过了比较片面的评测,后面大家有兴趣可以自己试一试,超大序列文件的处理上awk肯定是有优势了,更别提awk也可以和管道一起使用的灵活性了,最后,现在大多数生信都基于python,尤其是对于新手来说,学习一门新的语言非常的吃力,而且语法的混淆也会给工作带来很多烦恼。
说了这么多,我们来正式介绍一下我们这个新朋友吧,awk - 一种处理文本文件的语言,是一个强大的文本分析工具,它的名字来自它的三位创始人的名字的首字母,大家有兴趣的可以去搜一下,都是大佬。
关于awk后面会有很长的篇幅介绍,此处就不给大家举例子了。
如果你喜欢我的文章,请收藏我的文章并且给我个赞,你的支持就是我更新的最大的动力,关注我会有更多惊喜哦,专注于生物信息学以及数据分析入门和进阶教程,也许我给不了你从10-100,但是我可以给你最好的从0-10!
最后,关注我的公众号,领取更多学习资料吧!!!
打开v搜索,”轻松玩转生信“或者从下面文章进去获取二维码关注哦