egrep(grep -E) 支持正则表达式的拓展元字符
1、运用正则,判断需要[[ ]]
num1=1
[[ $num1 =~ ^[0-9]+$ ]] && echo "yes" || echo "no"

num3=1b1
[[ $num3 =~ ^[0-9]+$ ]] && echo "yes" || echo "no"

2、* 0或多个
useradd abrt
grep 'abc*' /etc/passwd

3、\< 词首定位符号 \>词尾定位符号
cat a.txt | egrep '\<[Jj]ack\>'

拓展:“ :% s/\<[Jj]ack\>/123/g ”
vim jack.txt
Jack JACK JAck jackly
:% s/\<[Jj]ack\>/123/g

4、^以什么开头
grep '^root' /etc/passwd

5、$以什么结尾
grep 'bash$' /etc/passwd

6、 . 匹配单个字符
grep 'r..t' /etc/passwd

grep 'r.t' /etc/passwd
7、.* 任意多个字符
grep 'r.*t' /etc/passwd

8、[ ] 匹配方括号中的任意一个字符
grep 'Root' /etc/passwd
grep '[Rr]oot' /etc/passwd

9、[ - ] 匹配指定范围内的一个字符
grep [a-z]oot /etc/passwd

10、[ ^ ] 匹配不在指定组内的字符,取反得意思
^在[]内表示取反,^在[]外表示以什么开头
grep '[^0-9]oot' /etc/passwd

grep '[^0-9A-Z]oot' /etc/passwd

grep '[^0-9A-Za-z]oot' /etc/passwd

grep '[a-z]oot' /etc/passwd

grep '^[rc]oot' /etc/passwd

11、\( \)匹配后的标签
vim file1.txt
IPADDR=192.168.1.123
GATEWAY=192.168.1.1
NETMASK=255.255.255.0
DNS=114.114.114.114
:% s#\(192.168.1.\)123#\12#

:% s#\(192.\)\(168.\)\(1.\)2#\1\2\35#

:% s#\(192.\)\(168.\)\(1.\)\(5\)#\1\26.\4#

12、+ 匹配一个或多个前导字符
egrep 'ro+t' /etc/passwd

13、? 匹配零个或一个前导字符
egrep 'ro?t' /etc/passwd

14、a|b 匹配a或b
netstat -anlp|egrep ':80|:22'

cat /etc/passwd | egrep 'root|alice'

15、x{m} 字符x重复m次
[root@localhost ~]# cat a.txt
love
love.
loove
looooove
cat a.txt | egrep 'o{2}' a.txt

cat a.txt | egrep 'o{2,}' a.txt

cat a.txt | egrep 'o{6,7}' a.txt

16、扩展正则表达式元字符
+ 匹配一个或多个前导字符
[a-z]+ove
? 匹配零个或一个前导字符
lo?ve
a|b 匹配a或b
love|hate
(..)(..)\1\2 标签匹配字符
(love)able\1er
x{m} 字符x重复m次
o{5
x{m,} 字符x重复至少m次
o{5,}
x{m,n} 字符x重复m到n次
o{5,10}
本文详细介绍了egrep命令如何支持正则表达式的各种扩展元字符,包括特殊字符的用法、位置匹配、重复次数、取反、标签匹配等,帮助读者理解并应用在实际文本搜索中。
1256

被折叠的 条评论
为什么被折叠?



