linux基础之正则表达式

正则表达式

1、正则表达式的分类(依赖于grep)

1.普通正则表达式
2.拓展正则表达式

2、普通正则表达式

2.1 ^ : 以某字符开头

[root@mysql03 ~]# grep '^#' ./2.txt  # 匹配当前目录下文件2.txt中以警号开头的行

2.3 $ : 以某字符结尾

[root@mysql03 ~]# grep 'c$' ./2.txt  # 匹配当前目录下文件2.txt中以c开头的行

2.4 . : 匹配除换行符之外的任意单个字符

[root@mysql03 ~]# grep '.' ./2.txt  # 匹配当前目录下文件2.txt中除了换行符之外的任意字符 

2.5 * :匹配前导字符的任意个数

[root@mysql03 ~]# grep '123454*' ./2.txt  # 匹配当前目录下文件2.txt中包含有123454这几个字符任意个数的行

2.6 [] : 匹配中括号内容中的任意一个字符

[root@mysql03 ~]# grep '[1234]' ./2.txt  # 匹配当前目录下文件2.txt中包含有1234这串字符中任意一个字符的行

2.7 [^内容] : 匹配除了中括号内容外的任意字符

[^ ] : 匹配除了中括号内容外的任意字符
[root@mysql03 ~]# grep '[^1234]' ./2.txt

2.8 [a-z] : 匹配小写字母

[root@mysql03 ~]# grep '[a-z]' ./2.txt

2.9 [A-Z] : 匹配大写字母

[root@mysql03 ~]# grep '[A-Z]' ./2.txt

2.10 [a-zA-Z] : 匹配字母

[root@mysql03 ~]# grep '[a-zA-Z]' ./2.txt

2.11 [0-9] : 匹配数字

[root@mysql03 ~]# grep '[0-9a-zA-Z]' ./2.txt

2.12 \ : 取消转义

[root@mysql03 ~]# grep '\ ' ./2.txt  # 匹配当前目录下文件2.txt中的空行

2.13 () : 分组

\n : 代表第n个分组

image

image

image

image

image

image

3、拓展正则

{} : 匹配的次数
{n}	: 匹配n次
{n,} :至少匹配n次
{n,m} :匹配 n 到 m 次
{,m} :最多匹配m次
+ :匹配至少有一个前导字符
? : 匹配一个或零个前导字符
| :或

4、正则表达式练习题

案例1:在/etc/passwd文件中,匹配以ftp开头的行
	grep '^ftp' /etc/passwd

案例2:在/etc/passwd文件中,匹配以bash结尾的行
	grep 'bash$' /etc/passwd

案例3:匹配本机中的ip
	方法1:ip a | grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}'
	方法2:ip a | grep -E '([(1[0-9]{2}){3}(2[0-4][0-9]){3}(25[0-4]){3}[0-9]{1,2}]\.){3}[(1[0-9]{2}){3}(2[0-4][0-9]){3}(25[0-4]){3}[0-9]{1,2}]'

案例4:要求将/etc/fstab中去掉包含 # 开头的行,且要求 # 后至少有一个空格打印出来
	grep -vE '^#\ +' /etc/fstab

案例5:找出文件中至少有一个空格的行
	grep -E '\ +' xxx

案例6:将 nginx.conf 文件中以#开头的行和空行,全部删除 
	grep -vE '^\ *#|^$' /etc/nginx/nginx.conf

image

image

image

image

posted @ 2021-12-20 22:06  90啊  阅读(142)  评论(0编辑  收藏  举报