. //任意单个字符
[] //匹配指定范围内的任意单个字符
[^] //匹配指定范围外的任意单个字符
[root@node1 ~]# ls
,1001041081226 A a b c
01011051091337 B abc bbd d
1102106111448 C abd bca test.sh
101031071101559 D anaconda-ks.cfg bcd
[root@node1 ~]# ls | grep '...'
100101102103104105106107108109110
abc
abd
anaconda-ks.cfg
bbd
bca
bcd
test.sh
[root@node1 ~]#
[root@node1 ~]# ls | grep '[abc]'
a
abc
abd
anaconda-ks.cfg
b
bbd
bca
bcd
c
[root@node1 ~]# ls | grep '[abc][abc][abc]' // aba abb abc baa bab bac caa cab cac aaa bbb ccc
abc
bca
[root@node1 ~]# ls | grep '[abc][abc]'
abc
abd
anaconda-ks.cfg
bbd
bca
bcd
[root@node1 ~]#
[root@node1 ~]# ls | grep '[0-9][0-9][0-9]'
100101102103104105106107108109110
[root@node1 ~]# ls | grep '[0-9][0-9]'
101001011021031041051061071081091111012131415
[root@node1 ~]#
[root@node1 ~]# ls | grep '[^0-9]'
,
A
B
C
D
a
abad
abc
abcd
abd
anaconda-ks.cfg
b
bbd
bca
bcd
c
d
test.sh
取^
[root@node1 ~]# ls | grep '\^'
^
[root@node1 ~]#
0-9和^
[root@node1 ~]# ls | grep '[0-9^]'
01101001011021031041112131415234^
[root@node1 ~]#
[root@node1 ~]# ls | grep '[-0^9]'
010100101102103104
\-^
anaconda-ks.cfg
[root@node1 ~]#
2.2 匹配次数
//匹配次数(贪婪模式)
*//匹配其前面的任意单个字符任意次
.*//任意长度的任意字符
\? //匹配其前面的任意单个字符1次或0次
\+//匹配其前面的任意单个字符至少1次
\{m,n\} //匹配其前面的任意单个字符至少m次,至多n次
[root@node1 ~]# ls a*c
aaaaaac aaaaac aaaac aaac aac abc ac
[root@node1 ~]#
[root@node1 ~]# ls | grep 'a*c'
aaaac
aaac
aac
abc
abcd
ac
anaconda-ks.cfg
bca
bcd
c
[root@node1 ~]#
[root@node1 ~]# ls | grep '^a*c$'
aaaac
aaac
aac
ac
c
[root@node1 ~]#
.*//任意长度的任意字符
[root@node1 ~]# ls | grep '.*'
,01101001011021031041112131415234
A
B
C
D
\-^
a
aaaaaac
aaaaac
aaaac
aaac
aac
abad
abc
abcd
abd
ac
anaconda-ks.cfg
b
bbd
bca
bcd
c
d
test.sh
[root@node1 ~]#
\? //匹配其前面的任意单个字符1次或0次
[root@node1 ~]# ls | grep '^a\?c$'
ac
c
[root@node1 ~]#
\+//匹配其前面的任意单个字符至少1次
[root@node1 ~]# ls | grep '^a\+c$'
aaaaaac
aaaaac
aaaac
aaac
aac
ac
[root@node1 ~]#
\{m,n\} //匹配其前面的任意单个字符至少m次,至多n次
[root@node1 ~]# ls | grep '^a\{3,5\}c$'
aaaaac
aaaac
aaac
[root@node1 ~]# ls | grep '^a\{2,5\}c$'
aaaaac
aaaac
aaac
aac
[root@node1 ~]#
[root@node1 ~]# ls | grep '^a\{2,\}c$'
aaaaaac
aaaaac
aaaac
aaac
aac
[root@node1 ~]#
[root@node1 ~]# ls | grep '^a\{2\}c$'
aac
[root@node1 ~]# ls | grep '^a\{3\}c$'
aaac
[root@node1 ~]# ls | grep '^a\{4\}c$'
aaaac
[root@node1 ~]#
2.3 位置锚定
//位置锚定
^//锚定行首,此字符后面的任意单个字符必须出现在行首
$ //锚定行尾,此字符前面的任意单个字符必须出现在行尾
^$ //空白行
\<或\b //锚定词首,其后面的任意单个字符必须作为单词首部出现
\>或\b //锚定词尾,其前面的任意单个字符必须作为单词尾部出现
/分组
\(\)
例:\(ab\)*//后向引用
\1//引用第一个左括号以及与之对应的右括号所包括的所有内容
\2//引用第二个左括号以及与之对应的右括号所包括的所有内容
[root@node1 ~]# ls | grep '^a\{3,5\}c$'
aaaaac
aaaac
aaac
[root@node1 ~]# ls | grep '\<a\{3,5\}c\>'
aaaaac
aaaac
aaac
[root@node1 ~]# ls | grep '\ba\{3,5\}c\b'
aaaaac
aaaac
aaac
[root@node1 ~]#
[root@node1 ~]# cat abc
abc ababc aaac aaaaabac aaaaac aaaaacc
[root@node1 ~]# grep '\<a\+c' abc
abc ababc aaac aaaaabac aaaaac aaaaacc
[root@node1 ~]#
[root@node1 ~]# ls | grep '^\(ac\)*$'
ac
[root@node1 ~]# touch acacacac
[root@node1 ~]# touch acac
[root@node1 ~]# touch acacacacac
[root@node1 ~]# ls | grep '^\(ac\)*$'
ac
acac
acacacac
acacacacac
[root@node1 ~]#
[root@node1 ~]# ls | grep '^\(ac\)\{2,3\}$'
acac
[root@node1 ~]# ls | grep '^\(ac\)\{3,4\}$'
acacacac
[root@node1 ~]# ls | grep '^\(ac\)\{1,4\}$'
ac
acac
acacacac
[root@node1 ~]#
[root@node1 ~]# echo 'hello abc world' |sed 's/hello \(.*\) \(.*\)/hello \2 \1/'
hello world abc
[root@node1 ~]#
[root@node1 ~]# cat abc
hello run world
[root@node1 ~]# sed 's/hello \(.*\) \(.*\)/hello \2 \1/' abc
hello world run
[root@node1 ~]# sed -r 's/hello (.*)(.*)/hello \2 \1/' abc
hello world run
[root@node1 ~]# sed -E 's/hello (.*)(.*)/hello \2 \1/' abc
hello world run
[root@node1 ~]# sed -ri 's/hello (.*)(.*)/hello \2 \1/' abc
[root@node1 ~]# cat abc
hello world run
[root@node1 ~]#
//或者
| //or 默认匹配|的整个左侧或者整个右侧的内容
[root@node1 ~]# ls | grep -E '^a$|^abc$'
a
abc
[root@node1 ~]# ls | grep '^a$\|^abc$'
a
abc
[root@node1 ~]#
[root@node1 ~]# ls | grep -E '^(a|A)bc$'
Abc
abc
[root@node1 ~]# ls | grep -E '^a|Abc$'
Abc
a
aaaaaac
aaaaac
aaaac
aaac
aac
abad
abc
abcd
abd
ac
acac
acacacac
acacacacac
anaconda-ks.cfg
[root@node1 ~]#
三. 其他
1. 示例
1.
[root@node1 ~]# cat abc
80.868028680322868086803386
[root@node1 ~]# grep 80.86 abc
80.868028680322868086803386
[root@node1 ~]# grep '80.86' abc
80.868028680322868086803386
[root@node1 ~]#
2.
[root@node1 ~]# ls
What anaconda-ks.cfg somewhat what
Whatever someWhat test.sh
[root@node1 ~]# ls | grep '[Ww]hat'
What
Whatever
someWhat
somewhat
what
[root@node1 ~]# ls | grep '^[Ww]hat$'
What
what
[root@node1 ~]#
3.
[root@node1 ~]# ls | grep '[0-9a-b?,;]'
,0123456789;
?
a
b
[root@node1 ~]#
4.
[root@node1 ~]# ls
'!' 1 4 7 ';' 'a!' b 'b?' 'c?' f,258 '?' a. 'b!' c d g0369 a 'a?' b. 'c!' e
[root@node1 ~]# ls | grep '[0-9a-b][,;!]'
a!
b!
[root@node1 ~]# ls | grep '[0-9a-b][,.;!]'
a!
a.
b!
b.
[root@node1 ~]#
5.
[root@node1 ~]# ls
'!' 1 2. 4 7 ';' 'a!' b 'b?' 'c?' f,1.358 '?' a. 'b!' c d g023.69 a 'a?' b. 'c!' e
[root@node1 ~]# ls | grep '[0-9a-b][,;!]'
a!
b!
[root@node1 ~]# ls | grep '[0-9a-b][,;.!]'1.2.3.
a!
a.
b!
b.
[root@node1 ~]#
6.
MM-DD-YY
MM/DD/YY
月 日 年
[0-1][0-9][-/][0-3][0-9][-/][0-9][0-9]
1-12月 -/1-31日 -/ [0-9][0-9]