正则表达式就是处理字符串的方法,它以行为单位来进行字符串的处理操作,正则表达式通过一些特殊符号的辅助,可以让用户轻易完成查找、删除、替换某特定字符串的处理过程。
一、正则表达式与通配符的区别:
1、正则符号匹配的是文件内容信息。
2、通配符匹配的是文件名称信息。
二、系统特殊符号
1、美元符号:$
1)用于取出变量中的内容
# 获取字符编码
[root@localhost ~]# echo $LANG
zh_CN.UTF-8
# 查看环境变量
[root@localhost ~]# echo $PATH
/root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/data/jdk1.8.0_421/bin
2)用于取出指定列的信息,在awk中常用
[root@localhost ~]# awk -F ':' '{ print $4 }' /etc/passwd
3)表示用户命令提示符。超级用户为#,普通用户为$.
[root@localhost ~]# su - liyb
[liyb@localhost ~]$
4)表示一行的结尾
2、叹号符号:!
1)用于取反或者排除的意思。
2)用于强制操作处理:vim中强制保存退出,wq!,q!
3、竖线符号:|
1)表示管道符号,管道前面执行命令的结果,交给管道后面的命令执行。
[root@localhost ~]# ps -ef |grep tomcat
2)经常配合xargs命令使用,将查找出的结果进行分组显示。
find / -name "*.log" | xargs rm -rf
4、井号:#
1)表示文件内容注释符号
2)超级用户命令提示符
5、引号符号
1)$():表示命令执行结果留下,用于其他命令调用。
2)双引号:“” --表示输入内容,就是输出内容,但是部分信息会被解析。
3)单引号:'' --表示输入即输出
4)反引号:`` --表示执行命令的结果留下,用于其他命令执行或调用
# 查看某个命令属于哪个软件包
[root@localhost ~]# rpm -qf `which nslookup`
bind-utils-9.16.23-21.oe2203.x86_64
6、定向符号
1)小于符号:单个< 标准输入重定向符号 两个<< 标准输入追加重定向符号
2)大于符号:单个>/2> 标准输出重定向符号/错误输出重定向符号 >>/2>> 标准输出追加重定向/错误输出追加重定向符号
# 将挂载信息追加到fstab文件,使其开机自动挂载
[root@localhost ~]# cat >> /etc/fstab <<EOF
/dev/vdb /data xfs defaults 0 0
EOF
7、路径信息符号
1)单点符号:. --表示当前目录
2)双点符号:.. --表示上级目录
[root@localhost data]# cd ..
[root@localhost /]#
3)波浪符号:~ --表示用户家目录 超级用户家目录:/root 普通用户家目录:/home/用户名称
4)减号符号:- --表示回到上次的目录,cd -
8、逻辑符号
1)并且符号:&& --表示前面的命令执行成功,再执行后面的命令
[root@localhost ~]# systemctl start nginx && systemctl enable nginx
2)或者符号:|| --表示前面的名称执行失败,再执行后面的命令。若前面的命令执行成功,则不执行后面的命令。
三、基础正则符号和扩展正则符号。
1、基础正则符号:^ $ . * [] \
1)尖角符号:^
表示匹配以什么字符开头的一行信息 ,^bak 表示匹配以bak开头的一行信息。
2)美元符号:$
表示匹配以什么字符结尾的一行信息, 表示匹配以bak结尾的一行信息。
3)尖角+美元符号:^$
表示过滤空行信息。
4)点号符号:.
表示匹配任意一个且只有一个字符。
5)星号符号:*
表示匹配前一个字符出现连续出现1次或0次以上
6)点星符号:.*
表示匹配文件中所有信息(包括空行) 。
^.*xxx :表示从开头到什么字符为止的内容(贪婪匹配)
^xxx.*xxx$ :表示以什么开头到什么字符结尾的全部内容信息。
7)转义符号:\
-
将有特殊意义符号,转义成普通信息进行识别 .$ --表示匹配以.结尾的内容信息
-
将没有意义的信息转义为有特殊意义的信息 \n --换行 \t --制表符,相当于tab
8)中括号:[]
表示匹配括号内的多个字符信息。
[abc] 匹配包含a或b或c信息的内容
9)排除符号:[^]
表示排除括号中的信息。
[^abc] 匹配排除包含a或b或c信息的其他内容
2、扩展正则符号:+ | () {} ?
1)加号符号:+
表示前一个字符连续出现了1次或多次以上。一般加号与中括号使用,可以匹配多个不同的连续字符
2)问号符号:?
表示前一个字符出现0次或1次
3)竖线符号:|
表示匹配多个满足条件的信息(或者) a|b|c 匹配出含有a或b或c内容的信息
4)小括号符号:()
(1)表示匹配一个整体
(2)表示后向引用前项 (.*) \1 经常在sed中使用
5)大括号符号:
表示定义前面字符出现的次数
{x} 表示前一个字符正好连续出现x次。
{x,y} 表示前一个字符连续至少出现x次,最多出现y次。
{x,} 表示前一个字符连续出现x次,最多无限次
{,y} 表示前一个字符至少连续出现0次,最多y次。
3、注意事项
默认grep ,sed不能直接识别扩展正则符号,需要提升级别才可识别
grep --- egrep 或 grep -E
sed --- sed -r
示例:批量创建用户 lyb01..lyb10,并给每个用户设置密码信息,默认初始化密码(123456) 具体命令:
seq -w 10|sed -r 's#(.*)#useradd liyb\1;echo 123456|passwd --stdin lyb\1#g'
如果你觉得这个作品对你有帮助,请不吝点赞、收藏,分享给身边更多的朋友。如果你有任何疑问或建议,欢迎在评论区留言交流。