Linux shell正则表达式之元字符
*:匹配星号之前的字符有0个或者多个


.:匹配任意字符,"."也可以匹配到空格符

^:匹配行首

$:匹配行尾

匹配空白行

[]:匹配字符集合

<>:匹配精确的字符
加上双引号为精确匹配
[root@oraclehost tmp]# cat passwd | grep "\<root\>"
root:x:0:0:root:/root:/bin/bash
<root>:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
注意没加双引号的输出为
[root@oraclehost tmp]# cat passwd | grep \<root\>
<root>:x:0:0:root:/root:/bin/bash
{n}:匹配前面的字符出现n次
{n,}}:匹配前面的字符至少出现n次
{n,m}}:匹配前面的字符至少出现n次,至多出现m次
[root@oraclehost tmp]# cat passwd | grep "ro\{1,\}t"
root:x:0:0:root:/root:/bin/bash
<root>:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
取所有行中不以n,h结尾的行

单引号,双引号,反引号的区别
1.双引号:保护特殊元字符和通配符不被shell解析,但是允许变量和命令的解析,以及转义符的解析。
[root@oraclehost log]# echo "the date is `date`"
the date is Wed Sep 14 10:29:08 CST 2022
- 单引号:单引号内的任何变量、元字符、通配符、转义符都不会被shell解析,均被原样输出。使用双引号或反斜杠转义可显示输出单引号,但是双引号和反斜杠不能被同时使用。如命令:echo "'",输出结果会为('),而不是(')
[root@oraclehost log]# echo "\'"
\'
[root@oraclehost log]# echo '\'
\
[root@oraclehost log]# echo '"\"'
"\"
[root@oraclehost log]# echo 'the date is `date`'
the date is `date`
- 反引号:反引号的功能是命令替换,在反引号(``) 中的内容通常是命令行,程序会优先执行反引号中的内容,并使用运行结果替换掉反引号处的内容。
[root@oraclehost log]# echo "the date is `date`"
the date is Wed Sep 14 10:29:08 CST 2022
浙公网安备 33010602011771号