通配符、正则表达式使用场合:
通配符:一般是用于命令行脚本等bash环境(df、cut、sort、uniq、tr等)
linux正则表达式:常用于三剑客场景(grep、awk、sed)
通配符
常见通配符
* - 代表所有(0到多个)字符 ? - 代表任意一个字符 [0-9] - 匹配0-9之间的单个数字 [abc] - 匹配这三个字符中的任意一个字符 ; - 两个命令之间的分隔符 # - 在配置文件里,注释效果 | - 管道文件 ~ - 当前用户的家目录 - - 上一次的所在目录 $ - 变量前需要加的符号 / - 路径分隔符,也是根 >或1> - 输出重定向,覆盖原有数据 >> - 追加输出重定向,追加在文件内容的尾部 < - 输入重定向(xargs,tr) << - 追加输入重定向(cat) ' - 单引号,不具备变量置换功能,引号内所见即所得 " - 双引号,具备变量置换功能,解析变量后输出,不加引号相当于双引号 ` - 反引号,两个``中间为命令,会先执行,等价$() {} - 中间为命令去、区块组合或内容系列 [] - 中间为字元组合 () - 在中间为子shell的起始与结束 ! - 逻辑运算中的“非”(not) && - and并且,当前一个指令执行成功时,执行后一个指令 || - or或者,当前一个指令执行失败时,执行后一个指令 .. - 代表上级目录 . - 代表当前目录
正则表达式
分类:基本正则表达式BRE;扩展正则表达式ERE(需要grep -E,sed -r,awk好像没扩展正则)
元字符分类:字符匹配、匹配次数、位置锚定、分组。
匹配次数
基础正则: * :匹配前面的字符任意次,最少一次。且是贪婪模式,尽可能的长匹配。 .* :匹配任意长度的字符。 ? :匹配其前面的字符0次或1次。 + :匹配其前面的字符最少1次。 {4} :匹配前面的字符4次。 {m,n} :匹配前面的字符最少m次,最多n次。 扩展正则: * :匹配前面一个字符任意次。 ? : 匹配其前面的一个字符0次或1次。 + :匹配其前面的一个字符最少1次。 {8} :匹配前面的一个字符8次。 {m,n} :匹配前面的一个字符最少m次,最多n次。 练习: 1{4} - 表示匹配字符 "1" 重复4次 1{5,} - 表示匹配字符 "1" 重复4次或4次以上 a{,8} - 表示匹配字符 "a" 重复8次或8次以内 d1{3,5} - 表示匹配字符 "1" 重复3-5次
字符匹配
基础正则表达式:
. :匹配任意单个字符。 [] :匹配指定范围内的任意单个字符。 [-] :表示匹配"[-]"里一段字符的任意单个字符,如[0-9]即0到9。 [^] :匹配指定范围外的任意单个字符。 [[:alnum:]] :匹配字符和数字。 [[:alpha:]] :匹配a-z,A-Z。 [[:lower:]] :匹配小写字母。 [[:upper:]] :匹配大写字母。 [[:blank:]] :匹配空白字符(即空格和制表符)。 [[:digit:]] :匹配十进制数字。 [[:xdigit:]] :匹配十六进制数字。
位置锚定(定位出现的位置)
基础正则表达式: ^ :行首锚定,用于模式最左侧。 $ :行尾锚定,用于模式最右侧。 ^PATTERN$ :用于匹配整行。 ^$ :匹配空白行。 ^[[:space:]]$ :匹配空白行。 <或 :词首锚定,用于单词最左侧。 >或 :词尾锚定,用于单词最右侧。
练习:
<PATTERN> :匹配单词"PATTERN"。
PATTERN :匹配单词"PATTERN"。
# cat test.sh |grep "look" ,# cat test.sh |grep "<look>" :匹配包含"look"单词的行。
分组(一般sed用的多,用于文本替换)
() :将一个或多个字符捆绑在一起,当做一个整体进行处理。 : 表示从左侧起第n个括号以及与之匹配右括号之间的模式所匹配到的字符。 | :表示或 扩展正则表达式: () :将一个或多个字符捆绑在一起,当做一个整体进行处理。 | : 表示或 练习: 基础 (string+(string2)*) :其中1代表string+(string2)*,2代表string2。 扩展 (string+(string2)*) :其中1代表string+(string2)*,2代表string2。
()().*() :其中1表示第一个()内容,2表示第二个()内容,以此类推....
a|b :表示a或b。 a|b :表示a或b; (C|c)at :表示Cat或cat。 (C|c)at :表示Cat或cat;
本文摘自 :https://www.cnblogs.com/