【gerp】 Global Research 根据模式,搜索文本,并将符合模式的文本行显示在屏幕中
-i 忽略大小写
--color[=when] --colour[=when] 匹配到的字符添加颜色
-v 反向查找,显示没有被匹配到的行
-o 只显示被模式匹配到的字符串
-E 使用扩展正则表达式
-A # 显示匹配到的字符之后的#行
-B # 显示匹配到的字符之前的#行
-C # 显示匹配到的字符前后都扩展#行
正则表达式
(注意linux下的正则表达式是工作在贪婪模式下的)
元字符
【.】表示匹配任意单个字符
【[]】表示指定范围内的任意单个字符
【[^]】表示指定范围外的任意单个字符
匹配次数:
【*】匹配其前面的字符任意次
例如 a,b,aab,acb,adb,amnb 使用a*b匹配到的结果只有 b,aab
【.*】匹配任意长度的任意字符
【?】前面的字符可有可无(注意?在使用是需要\?来转译字符)
【\{m,n\}】匹配其前面的字符最少m次,最多n次
位置锚定
【^】锚定行首,此字符后面的任意内容必须出现在行首
【$】锚定行尾,使字符前面的任意内容必须出现在行尾
【^$】表示空白行
【\<】或者【\b】其后面的任意字符必须作为单词的首部出现
【\>】或者【\b】其前面的任意字符必须作为单词的尾部出现
例如:
[root@gdy ~]# grep "root\>" gandiangg.txt
this is root
the user is mroot
chroot is a command
[root@gdy ~]# grep "\<root" gandiangg.txt
this is root
rooter is a dog's name
分组:
【\(\)】
【\(ab\)*】ab可以出现1次,0次,或者任意次(注意括号带有记忆效果)
后向应用
\1匹配第1个左括号与之对应的右括号所匹配的字符
\2匹配第2个左括号与之对应的右括号所匹配的字符
\n匹配第n个左括号与之对应的右括号所匹配的字符
扩展正则表达式
字符匹配:
【.】表示匹配任意单个字符
【[]】表示指定范围内的任意单个字符
【[^]】表示指定范围外的任意单个字符
[:space:]:表示空白字符即空格
[:punct:]:标点符号
[:lower:]:小写字母
[:upper:]:大写字母
[:alpha:]:大小写字母
[:digit:]:数字
[:alnum:]:数字和大小写字母
次数匹配
【*】匹配其前面的字符任意次
【?】匹配其前面的字符0次或1次
【+】匹配其前面的字符至少一次
【{n}】匹配前面的字符n次
【{m,n}】匹配其前面的字符最少m次,最多n次
位置锚定:
【^】锚定行首,此字符后面的任意内容必须出现在行首
【$】锚定行尾,使字符前面的任意内容必须出现在行尾
【^$】表示空白行
【\<】或者【\b】其后面的任意字符必须作为单词的首部出现
【\>】或者【\b】其前面的任意字符必须作为单词的尾部出现
分组:
【()】分组\1,\2,\3....
或者
【|】或者指or
例如 C|cat 指C或者cat 注意:并不是指Cat或者cat
(C|c)at才表示为Cat或者cat
例如:
找出/boot/grub/grub.conf文件中1-255之间的数字:
egrep --color '\<([1-9]|[1-9][0-9]|1[1-9][1-9]|2[0-5][0-5])\>' /boot/grub/grub.conf
在上面正则表达式中()能将括号内的所有组和提取
找出ifconfig执行结果中的ip地址
ifconfig | egrep -o --color '\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))\.(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))\.(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))\>'
上面与下面效果一样
ifconfig | egrep -o --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])\>'
相关命令
正确查询ip(严格要求)
ifconfig | egrep -o --color '\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[01][0-9]|22[0-3])\>(\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\>){2}\.\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\>'
【IPv4】
IPv4地址可分为A B C D E共五类
A: 1-127
B: 128-191
C: 192-223
【egrep】==【grep -E】
【fgrep】快速搜索,不支持正则表达式
-i 忽略大小写
--color[=when] --colour[=when] 匹配到的字符添加颜色
-v 反向查找,显示没有被匹配到的行
-o 只显示被模式匹配到的字符串
-E 使用扩展正则表达式
-A # 显示匹配到的字符之后的#行
-B # 显示匹配到的字符之前的#行
-C # 显示匹配到的字符前后都扩展#行
正则表达式
(注意linux下的正则表达式是工作在贪婪模式下的)
元字符
【.】表示匹配任意单个字符
【[]】表示指定范围内的任意单个字符
【[^]】表示指定范围外的任意单个字符
匹配次数:
【*】匹配其前面的字符任意次
例如 a,b,aab,acb,adb,amnb 使用a*b匹配到的结果只有 b,aab
【.*】匹配任意长度的任意字符
【?】前面的字符可有可无(注意?在使用是需要\?来转译字符)
【\{m,n\}】匹配其前面的字符最少m次,最多n次
位置锚定
【^】锚定行首,此字符后面的任意内容必须出现在行首
【$】锚定行尾,使字符前面的任意内容必须出现在行尾
【^$】表示空白行
【\<】或者【\b】其后面的任意字符必须作为单词的首部出现
【\>】或者【\b】其前面的任意字符必须作为单词的尾部出现
例如:
[root@gdy ~]# grep "root\>" gandiangg.txt
this is root
the user is mroot
chroot is a command
[root@gdy ~]# grep "\<root" gandiangg.txt
this is root
rooter is a dog's name
分组:
【\(\)】
【\(ab\)*】ab可以出现1次,0次,或者任意次(注意括号带有记忆效果)
后向应用
\1匹配第1个左括号与之对应的右括号所匹配的字符
\2匹配第2个左括号与之对应的右括号所匹配的字符
\n匹配第n个左括号与之对应的右括号所匹配的字符
扩展正则表达式
字符匹配:
【.】表示匹配任意单个字符
【[]】表示指定范围内的任意单个字符
【[^]】表示指定范围外的任意单个字符
[:space:]:表示空白字符即空格
[:punct:]:标点符号
[:lower:]:小写字母
[:upper:]:大写字母
[:alpha:]:大小写字母
[:digit:]:数字
[:alnum:]:数字和大小写字母
次数匹配
【*】匹配其前面的字符任意次
【?】匹配其前面的字符0次或1次
【+】匹配其前面的字符至少一次
【{n}】匹配前面的字符n次
【{m,n}】匹配其前面的字符最少m次,最多n次
位置锚定:
【^】锚定行首,此字符后面的任意内容必须出现在行首
【$】锚定行尾,使字符前面的任意内容必须出现在行尾
【^$】表示空白行
【\<】或者【\b】其后面的任意字符必须作为单词的首部出现
【\>】或者【\b】其前面的任意字符必须作为单词的尾部出现
分组:
【()】分组\1,\2,\3....
或者
【|】或者指or
例如 C|cat 指C或者cat 注意:并不是指Cat或者cat
(C|c)at才表示为Cat或者cat
例如:
找出/boot/grub/grub.conf文件中1-255之间的数字:
egrep --color '\<([1-9]|[1-9][0-9]|1[1-9][1-9]|2[0-5][0-5])\>' /boot/grub/grub.conf
在上面正则表达式中()能将括号内的所有组和提取
找出ifconfig执行结果中的ip地址
ifconfig | egrep -o --color '\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))\.(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))\.(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))\>'
上面与下面效果一样
ifconfig | egrep -o --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])\>'
相关命令
正确查询ip(严格要求)
ifconfig | egrep -o --color '\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[01][0-9]|22[0-3])\>(\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\>){2}\.\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\>'
【IPv4】
IPv4地址可分为A B C D E共五类
A: 1-127
B: 128-191
C: 192-223
【egrep】==【grep -E】
【fgrep】快速搜索,不支持正则表达式