grep命令简介:
此个命令根据模式,搜索文本,并将符合模式的文本行显示出来。包含匹配,
不是完全匹配。也就是说只要某一行有一部分匹配到就显示出来。
*延伸阅读:模式(pattern)是指文本字符和正则表达式的元字符组合而成匹配条件
1.命令格式:egrep=grep -E (fgrep快速搜索本文中匹配到的字符行,但是fgrep不支持 正则表达式,其他用法与grep一样。)
grep [OPTIONS] PATTERN [FILE...]
grep -i 'root' /etc/passwd
2.命令功能:
对文本进行搜索,将符合模式的文本行显示出来。
3.命令参数:
-i 查找时忽略大小写
--color 模式中关键字以高亮有颜色显示出来
-v 显示没有被模式匹配的选项
-o 只显示被模式匹配的字符串
-E 使用扩展正则表达式
-A # 表示显示被模式匹配到的行,并显示后#行 #指具体数字 -A after后面的
-B # 表示显示被模式匹配到的行,并显示前#行 #指具体数字 -B before前面的
-C # 表示显示被模式匹配到的行,并显示前后各#行 #指具体数字
支持正则表达式:
.:匹配任意单个字符
*:匹配其前面的字符任意次(包括0次)
.*:匹配任意长度的任意字符
[]:匹配指定范围内的任意单个字符
[^]:匹配指定范围外的任意单个字符
[:digit:]数字 [:lower:]小写字母 [:upper:]大写字母 [:punct:]字符/符号
[:space:]空格 [:alpha:]所有字母 [:alnum:]所有字母和数字
\?:匹配其前面的字符0次或1次 \表示转义
\{m,n\}:匹配前面的字符至少m次,最多n次
\{m,\}:匹配前面的字符至少m次
\{0,n}:匹配前面的字符,最多n次
\{n}:匹配前面的字符n次
支持扩展正则表达式:-E选项 grep -E = egrep 扩展正则表达式
| : 或者表示符 比如a|bc|ca 表示a或者bc或者ca
.:匹配任意单个字符
[]:匹配指定范围内的任意单个字符
[^]:匹配指定范围外的任意单个字符
*:匹配其前面的字符任意次(包括0次)
?:匹配其前面的字符0次或者1次
+:匹配其前面的字符至少1次(相当于正则表达式中\{1,\})
{m,n}: 直接使用大括号不用使用转移符\,表示至少m次,最多n次
{n}:匹配前面的字符n次
位置锚定:(正则表达式和扩展正则表达式一样)
^: 锚定行首,此字符后面的任意内容必须出现在行首
$: 锚定行尾,此字符前面的任意内容必须出现在行尾
^$: 空白行
\<或\b: 锚定词首,其后面的任意字符必须作为单词首部出现
\>或\b: 锚定词尾,其前面的任意字符必须作为单词的尾部出现
正则表达式分组符号:(扩展正则表达式不用转义符直接为())
\(\)把括号内的当着一个整体
\(ab\)把ab当着一个整体
后向引用(扩展正则表达式一样)
\1: 引用第一个左括号以及与之对应的右括号所包括的所有内容
\2:引用第二个左括号以及与之对应的右括号所包括的所有内容
\3:引用第三个左括号以及与之对应的右括号所包括的所有内容
\n:引用第n个左括号以及与之对应的右括号所包括的所有内容
4.命令实例:
1、查找包含某些字符的所有行
grep "root" /etc/passwd
[root@xuelinux ~]# grep "root" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
2、grep --color 以高亮显示查找到的字符
可以把别名写入配置文档 vim ~/.bashrc1
# .bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias grep='grep --color'
3、grep '\([0-9]\).*\1$' /test/test1.txt 查找test1.txt文档中必须以前面第一个数字结尾的行
[root@xuelinux test]# grep '\([0-9]\).*\1$' /test/test1.txt
2who are you 2
4 youareringt4
5,he is 2tom2
7 eg is over 11
8 thanks you 1and1
[root@xuelinux test]# cat test1.txt
1,this is helloword! 此处没有以数字结尾
2who are you 2 此处匹配到
3,no 4 is not 2. 此处结尾是以.结尾所以未匹配到
4 youareringt4. 此处结尾是以.结尾所以未匹配到
4 youareringt4 此处匹配到,是以前面出现的数字4结尾
5,he is 2tom2 此处匹配到,是以前面出现的数字2结尾
5,he is 2tom2. 此处结尾是以.结尾所以未匹配到
6 tom is cat4,yes is 4. 此处结尾是以.结尾所以未匹配到
7 eg is over 11. 此处结尾是以.结尾所以未匹配到
7 eg is over 11 此处匹配到,是以前面出现的数字1结尾
8 thanks you 1and1 此处匹配到,是以前面出现的数字1结尾
8、取出本机表示ip地址的相关字符
ifconfig | egrep --color'(\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.){3}\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>'
egrep = grep -E (){3}表示前面括号里面的内容重复3次
本文转自wang650108151CTO博客,原文链接:http://blog.51cto.com/woyaoxuelinux/1862832 ,如需转载请自行联系原作者