ThinkSSL🔒 一键申购 5分钟快速签发 30天无理由退款 购买更放心 广告
[TOC] ## 文本过滤(grep命令) > * 正则表达式[Linux Shell 脚本编程(5)—文本过滤(正则表达式)](http://blog.csdn.net/lingfengliujian/article/details/78198110) > * grep 命令[Linux Shell 脚本编程(6)—文本过滤(grep命令)](http://blog.csdn.net/lingfengliujian/article/details/78255533) > * find > * awk > * sed > * 合并与分割(sort、uniq、join、cut、paste、split) ## grep命令 * 概念:grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。 * **按照行方式处理文本**。。。。 * grep 命令格式: ``` grep [参数] 正则表达式 [文件] ``` * 选项 ``` -a 不要忽略二进制数据。 -A<显示列数> 除了显示符合范本样式的那一行之外,并显示该行之后的内容。 -b 在显示符合范本样式的那一行之外,并显示该行之前的内容。 -c #计算符合范本样式的列数。 (只输出匹配行的计数) -C<显示列数>或-<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。 -d<进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。 -e<范本样式> #指定字符串作为查找文件内容的范本样式。 -E #将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。 -f<范本文件> 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。 -F 将范本样式视为固定字符串的列表。 -G 将范本样式视为普通的表示法来使用。 -h #在显示符合范本样式的那一列之前,不标示该列所属的文件名称。 -H 在显示符合范本样式的那一列之前,标示该列的文件名称。 -i 胡列字符大小写的差别。 -l 列出文件内容符合指定的范本样式的文件名称。 -L 列出文件内容不符合指定的范本样式的文件名称。 -n #在显示符合范本样式的那一列之前,标示出该列的编号。 (显示匹配行及行号) -q 不显示任何信息。 -R/-r 此参数的效果和指定“ -d recurse”参数相同。 -s #不显示错误信息。 -v #反转查找。 ---显示不包含匹配文本的所有行。 -w 只显示全字符合的列。 -x 只显示全列符合的列。 -y 此参数效果跟“-i”相同。 -o #只输出文件中匹配到的部分。 ``` * grep执行步骤 ``` > * (1) 把下一输入行复制到模式空间中. 模式空间是只可保存一个文本行的缓冲区. > * (2) 对模式空间应用正则表达式. > * (3) 如果有匹配存在,该行从模式空间中被复制到标准输出. > > * grep实用程序对输入的每行重复这三个操作步骤. > ``` * 注意特殊情形!! ``` > * 1 . grep是一个搜索程序,它只能搜索匹配一个正则表达式的一行的存在性. > * 2 . grep可以对一行采取唯一的动作是把它发送到标准输出. 如果该行不匹配正则表达式,则其不被打印. > * 3 . 行的选择只基于正则表达式. 行编号或其他准则不能用于选择行. > * 4 . grep是一个过滤器. 它可用在管道的左边或右边. > * 5 . grep不能用于增加,删除或修改行. > * 6 . grep不能用于只打印行的一部分. > * 7 . grep不能只读取文件的一部分. > * 8 . grep不能基于前面的内容或下一行来选择一行.只有一个缓冲区,它只保存当前行. ```