正则表达式概述
正则表达式是处理字符串的一种工具,可以用于查找、删除、替换特定的字符串,主要用于文件内容的处理。与之不同的是,通配符则用于文件名称的匹配。正则表达式通过使用特殊符号,帮助用户轻松实现对文本的操作。
一、正则表达式与通配符的区别
- 正则表达式匹配的是文件内容信息。
- 通配符匹配的是文件名称信息。
二、系统中的特殊符号
1. 美元符号($)
- 取出变量内容:用于显示环境变量。
echo $LANG # 获取字符编码 echo $PATH # 查看环境变量
- 取出指定列信息:常用于
awk
中。awk -F ':' '{ print $4 }' /etc/passwd
- 表示用户命令提示符:超级用户为
#
,普通用户为$
。 - 表示行尾:在正则表达式中表示一行的结尾。
2. 叹号符号(!)
- 取反或排除:常用于
grep
等工具。 - 强制操作:如在
vim
中使用wq!
强制保存并退出。
3. 竖线符号(|)
- 管道符号:将前一个命令的输出作为下一个命令的输入。
ps -ef | grep tomcat
- 与
xargs
结合使用:用于分组操作。find / -name "*.log" | xargs rm -rf
4. 井号(#)
- 注释符号:在脚本中表示注释。
- 超级用户提示符:表示超级用户的命令提示符。
5. 引号符号
$()
:执行命令并返回结果。- 双引号(“”):部分内容会被解析。
- 单引号(‘’):输入即输出,不解析内容。
- 反引号(``):执行命令并返回结果。
6. 定向符号
<
和>
:用于输入和输出重定向。>>
:追加重定向。
7. 路径符号
.
:表示当前目录。..
:表示上一级目录。~
:表示用户家目录。
8. 逻辑符号
&&
:表示前一个命令执行成功后,再执行后面的命令。||
:前一个命令执行失败后,才会执行后面的命令。
三、基础与扩展正则符号
1. 基础正则符号
^
:匹配行首。$
:匹配行尾。.
:匹配任意一个字符。*
:匹配前一个字符出现0次或多次。[]
:匹配括号内的任意字符。\
:转义字符,用于处理特殊字符。
2. 扩展正则符号
+
:前一个字符出现一次或多次。?
:前一个字符出现0次或1次。|
:或,匹配多个选项。()
:分组,匹配整体或用于引用前面的匹配。{}
:指定前一个字符出现的次数。
3. 注意事项
- 默认
grep
、sed
无法直接识别扩展正则符号,需要提升级别:grep
使用egrep
或grep -E
。sed
使用sed -r
。
示例:批量创建用户并设置密码
通过sed
命令批量创建用户liyb01
到liyb10
,并为每个用户设置初始密码123456
。
seq -w 10 | sed -r 's#(.*)#useradd lyb\1;echo 123456 | passwd --stdin lyb\1#g'
这个命令会自动生成10个用户,并给每个用户设置默认密码。
总结
通过系统特殊符号和正则表达式,可以有效提升文件操作和字符串处理的效率。了解这些符号的含义及其用法,能够更好地处理命令行操作中的常见需求。