linux 下Regular Expression

正则表达式:Regular Expression,REGEXP
元字符:
.:表示任意单个字符
[]: 匹配指定范围内的任意单个字符
[^]: 匹配指定范围外的任单个字符
字符集合: [:digit:], [:lower:],[:upper:],[:punct:] [:alpha:] [:space:],[:alnum:]

字符个数:(贪婪模式)
*:匹配其前面的字符任意次
a, b, ab, aab, acb, adb, amnb
a*b b ab aab
a.*b
.*:任意长度的任意字符

?: 匹配其前面的字符1次或0次
a?b
{m,n}:匹配其前的字符至少m次,自多n次
{1,} 至少一次
{0,3} 最多三次

位置锚定:
^:锚定行首,此字符后面的任意内容必须出现在行首
$: 锚定行尾,此字符前面的任意内容必须出现在行尾
^$:空白行

<或: 锚定词首,其后面的任意字符必须作为单词的首部出现
>或: 锚定词尾,其前面的任意字符必须作为单词的尾部出现

分组:
()
(ab)* ab可以出现任意次 *号修饰ab整体
后向引用
1: 第一个左括号以及与之对应的右括号所包括的
2:
3:

He love his lover.
She like her liker
HW love his liker
she like her lover

grep '(1..e).*1'

/etc/inittab
grep'([0-9]).*1$'

 

grep 'b..h$'
grep '[[:space:]][[:digit:]]$'
grep "root>" 或"root"

 

 


REGEXP: REGULAR EXPRESSION
Pattern:

正则表达式:
Basic REGEXP:基本
Extended REGEXP:扩展

基本正则表达式:
.:
[]:
[^]:

次数匹配:
*:任意次
?:0次或1次
{n,m}:至少n次,至多m次

锚定:
^:
$:
^$:
<, :
>, 
(): 分组 1, 2, 3

grep: 使用基本正则表达式定义的模式来过滤文本的命令;
-i 忽略大小写
-v:
-o:只显示被模式匹配到字符串
--color
-E: 使用扩展正则表达式
-A: 某一行被正则表达式匹配到了,同时显示下面的行 after
-B:before
-C:context

grep --color -A 2 "^ core id" /proc/cpuinfo

 

扩展正则表达式:
字符匹配:
.
[]
[^]

次数匹配
*:
?:相同,其前字符0次或1次
+:匹配其前面的字符至少一次=之前的/{0,1/}
{m,n}

位置锚定
^
$
<
>

分组
():分组
1,2.3

或者
|:or

grep --color -E '(C|c)at' test.txt
'^[[:space:]]+' 以至少一个空白字符开头的行


grep -E = egrep

显示所有以数值结尾且文件名中不包含空白的文件

ls *[^[:space:]]*[0-9]$

找出/boot/grub/grub.conf文件中1-255之间的数字
<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])> 必须作为单个单词出现

ip地址
.
ifconfig | egrep -o '(<([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])>'


ipv4
5类:A B C D E
A:1-127
B:128-191
C:192-223

ifconfig | egrep '<([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-1][0-9]|22[0-3])>(.<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])>){2}.<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])>'


grep, egrep
fgrep: fast grep 不支持正则表达式

原文地址:https://www.cnblogs.com/chrisDuan/p/4601896.html