文档介绍:grep 正则表达式
要用好Grep这个工具,其实就是要写好正则表达式,所以这里不对Grep的所有功能进行实例讲解,只列几个例子,讲解一个正则表达式的写法。$ls-l|Grep'^a'通过管道过滤ls-l输出的内容,只显示以a开头的行。$Grep'test'd*显示所有以d开头的文件中包含test的行。$Grep'test'aa 显示在aa,文件中匹配test的行。$Grep'[a-z]\{5\}'aa显示所有包含每个字符串至少有5个连续小写字符的字符串的行。$Grep'w\(es\)t.*'aa如果west被匹配,则es就被存储到内存中,并标记为1,然后搜索任意个字符(.*),这些字符后面紧跟着另外一个es(),找到就显示该行。如果用eGrep或Grep-E,就不用"\"号进行转义,直接写成'w(es)t.*'就可以了。===查找当前目录下包含alias字符串的*.conf的文件find.-name"*.conf"|xargs grep-H"alias"find.-name"*.conf"-exec grep-H"alias"{}\;-R-l一些也可以实现,但是通过管道|比单纯用grep复杂的参数更有效率。,使其作为grep的参数。===使用grep搜索文件内容--快捷、方便(1)在当前目录下的所有文件的文件内容中查找哪个文件的内容中有findcontents(大小写不敏感,列出findcontents所在文件的所在行)--适合于当前目录下的文件及目录数目比较少,如果查找后列出内容过多,将会失去查找意义。grep-rin findcontents*(2)如果查找后列出内容过多,就需要用如下命令(只列出findcontents在所在文件的出现次数):grep-ric findcontents*|grep-v:0(3)如果根本不知道文件所在目录,就需要在根目录下进行查找(查找整个硬盘空间),但是由于根目录下某些文件(bin、sbin、boot、dev、initrd、lib)没有查找价值,因而要将其排除在查找范围之外#cd/grep-rin findcontents`ls|grep-vE'bin|boot|dev|initrd|lib'`----i,--ignore-case-n,--line-number-c,--count-r,--recursive-v,--invert-match-E,--extended-regexp-e PATTERN,--regexp=PATTERN Use PATTERN as the pattern;useful to protect patterns beginning with-.注:有c的时候n将失效===grep、fgrep和egrep命令这组命令以指定模式搜索文件,并通知用户在什么文件中搜索到与指定的模式匹配的字符串,并打印出所有包含该字符串的文本行,在该文本行的最前面是该行所在的文件名。grep命令一次只能搜索一个指定的模式;egrep命令检索扩展的正则表达式(包括表达式组和可选项);fgrep命令检索固定字符串,它不识别正则表达式,是快速搜索命令。这组命令在搜索与定位文件中特定的主题方面非常有用。要搜索的模式可以被认为是一些关键词,您可以用它们来搜索文