Linux常用通配符及正则表达式
通配符、正则表达式使用场合:
通配符:一般是用于命令行脚本等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:]]$ :匹配空白行。 \<或\b :词首锚定,用于单词最左侧。 \>或\b :词尾锚定,用于单词最右侧。
练习:
\<PATTERN\> :匹配单词"PATTERN"。
\bPATTERN\b :匹配单词"PATTERN"。
# cat test.sh |grep "\blook\b" ,# cat test.sh |grep "\<look\>" :匹配包含"look"单词的行。
分组(一般sed用的多,用于文本替换)
\(\) :将一个或多个字符捆绑在一起,当做一个整体进行处理。 \n : 表示从左侧起第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;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?