通配符与正则表达式

本文深入解析Linux中的特殊符号作用及用法,包括重定向、通配符和正则表达式的区别与应用。详细介绍基础正则表达式的各种元素,如点、星号、中括号等,以及它们在文件搜索和内容匹配中的高效运用。

1.特殊符号
先运行里面的命令,把结果留下
“” 里面的特殊符号会被解析运行
’ ’ 所见即所得

重定向符号 先清空文件的内容,然后追加文件的最后

追加重定向,追加文件的最后(标准输出)
2>> 错误追加重定向(标准错误)
~ 当前用户的家目录
! 使用查找并运行历史命令

注释

root用户的提示符 

$ 取出变量的内容
普通用户的提示符

  • 所有 任何东西
    \ 撬棍 任何dongx
    | | 前一个命令执行失败任然执行后面的命令
    && 前一个命令执行成功,在执行后一个命令

2.通配符
通配符是用来查找文件的

* 表示所有,任意

{} 生成序列

3.正则表达式
正则:通过符号表示文字内容

作用:提高效率


支持正则表达式:Linux三剑客

4.注意事项
a.正则表达式是按照进行处理的
b.禁止使用中文符号

5.正则表达式与通配符区别
通配符----用来匹配查找文件名 大部分命令都可以使用
正则表达式-----在文件中匹配查找内容 Linux三剑客

6.正则表达式分类与环境准备
基础正则:^ $ . * [] basic regular expression BRE 三剑客都支持

扩展正则:| () {} ?  +		extend	regular expression     ERE	grep-E/egrep  sed -r  awk

7.基础正则表达式之-.与转义符
. .(点) 任意一个字符 不包含空行
-o 表示grep的执行过程 正则每次匹配到了什么
\(撬棍) 转义符号 脱掉马甲,打回原形
\n 表示回车换行
8.基础正则表达式之星号与连续出现
* 前一个字符出现了0次或者1次以上 >=0
注意:a-正则在表示 连续出现的时候表现出来的贪婪性
b-A表示连续出现了0次A ;A连续出现了1次A
9.基础正则表达式之表示所有
.
所有字符,缩放符号 所有

10.基础正则表达式之中括号的玩法
[] 中括号 [abc] 相当于是找出一个包含a或b或c的行
[^] 表示排除,取反

Shell通配符正则表达式存在多方面的区别: ### 用途不同 - **Shell通配符**:主要用于路径或文件名匹配。当Shell在命令参数中遇到通配符时,会将其扩展为匹配的文件路径;若没有匹配项,则作为普通字符传递给命令。例如,`ls *.txt` 会匹配所有以 `.txt` 结尾的文件,`ls file?.txt` 会匹配以 `file` 开头,后面跟一个任意字符,并以 `.txt` 结尾的文件[^3]。 - **正则表达式**:用于文本内容的匹配、查找、替换等操作。可以对字符串进行更复杂的模式匹配,广泛应用于各种文本处理工具,如 `grep`、`sed`、`awk` 等。例如,使用 `grep` 查找文件中包含特定模式的行。 ### 元字符含义不同 - **`?` 的用法**:在Shell通配符中,`?` 用于匹配单个字符;而在正则表达式中,`?` 用于匹配前一个字符或子模式的零次或一次。例如,`ls ab?.txt` 匹配以 `ab` 开头,后面跟一个任意字符,并以 `.txt` 结尾的文件;正则表达式 `a?b` 可以匹配 `b` 或 `ab`[^1]。 - **`*` 的用法**:Shell通配符的 `*` 匹配任意长度的字符(包括 0 个);正则表达式中的 `*` 表示匹配前面的字符零次或多次。 ### 语法复杂度不同 - **Shell通配符**:语法相对简单,常见的通配符有 `*`、`?`、`[]`、`[^]` 等,易于理解和使用。 - **正则表达式**:语法较为复杂,有基础正则表达式(BRE)和扩展正则表达式(ERE)之分,包含更多的元字符和特殊语法,如 `+`、`|`、`()` 等,能够表达更复杂的模式。 ### 工具支持不同 - **Shell通配符**:主要由Shell本身支持,在执行命令时自动进行扩展。 - **正则表达式**:需要特定的工具来支持,如 `grep`、`sed`、`awk` 等,并且不同工具对正则表达式的支持可能略有差异。 以下是一些示例代码来展示它们的区别: #### Shell通配符示例 ```bash # 匹配所有以 .sh 结尾的文件 ls *.sh # 匹配以 test 开头,后面跟一个任意字符的文件 ls test?.txt ``` #### 正则表达式示例 ```bash # 使用 grep 查找文件中以数字开头的行 grep '^[0-9]' file.txt # 使用 sed 将文件中所有的 hello 替换为 world sed 's/hello/world/g' file.txt ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值