linux通配符和三剑客(grep、sed、awk)正则表达式是不一样的
通配符一般是用于命令行脚本等bash环境,而linux正则表达式常用于三剑客场景
常见通配符:
* - 代表所有(0到多个)字符
? - 代表任意一个字符
; - 两个命令之间的分隔符
# - 在配置文件里,注释效果
| - 管道文件
~ - 当前用户的家目录
- - 上一次的所在目录
$ - 变量前需要加的符号
/ - 路径分隔符,也是根
>或1> - 输出重定向,覆盖原有数据
>> - 追加输出重定向,追加在文件内容的尾部
< - 输入重定向(xargs,tr)
<< - 追加输入重定向(cat)
' - 单引号,不具备变量置换功能,引号内所见即所得
" - 双引号,具备变量置换功能,解析变量后输出,不加引号相当于双引号
` - 反引号,两个``中间为命令,会先执行,等价$()
{} - 中间为命令去块组合或内容系列
! - 逻辑运算中的“非”(not)
&& - and并且,当前一个指令执行成功时,执行后一个指令
|| - or或者,当前一个指令执行失败时,执行后一个指令
.. - 代表上级目录
. - 代表当前目录
常见正则表达式:
为处理大量字符串而定义的一套规则和方法,linux正则表达式一般以行为单位处理的
1. 基础正则表达式
^ - 表示以...字符开头,^word $ - 表示以...字符结尾,word$ ^$ - 表示空字符,即可理解为空行 . - 表示匹配任意单个字符 - 表示转义符 * - 表示重复前面0个或1个以上字符 .* - 表示匹配所有 [] - 表示匹配"[]"里面任意单个字符 [^] - 表示取反"[^]"里面的任意单个字符 [-] - 表示匹配"[-]"里一段字符的任意单个字符,如[0-9]即0到9 1{4} - 表示匹配字符 "1" 重复4次 1{5,} - 表示匹配字符 "1" 重复4次或4次以上 1{,8} - 表示匹配字符 "1" 重复8次或8次以内 1{3,5} - 表示匹配字符 "1" 重复3-5次
2. 扩展正则表达式
+ - 表示重复 "一个或一个以上" 前面的所有字符("*"是0个) ? - 表示重复 "0个或一个" 前面的字符("."是有且只有1个) | - 表示过滤多个字符串 () - 分组过滤,后向引用
3. 元字符
- 边界字符,单词边界
- 换行符