linux下的通配符与正则表达式

本文详细介绍了 Linux 下的主要通配符及特殊字符,包括它们在脚本和命令行中的使用方式,并解释了基础正则表达式与扩展正则表达式的区别及其应用场景。

// 载自 : 鸟哥私房菜

linux下主要通配符与特殊字符如下:

*         代表0个或多个字符(或数字)
?         代表一个字母 ---- 数字不可以吗? 可以
#         注释,常用在脚本中
\            转义字符,将特殊字符或者通配符还原成一般字符
|            分隔两个管道
;         连续命令分隔
~         用户的家目录
$            变量之前需要加的,变量替换值
&         将命令变成后台工作
!         逻辑意义上的非,not
/         路径分隔
>   >>   输出导向
'            单引号,其中的变量不具有置换功能
"            双引号,其中的变量具有置换功能,即:单引号较双引号严格
`            撇号,Tab键上面那个字符,两个 ` 之间的命令可以先执行
()           中间为子shell的起始与结束
[]      中间为字符组合
{}      中间为命令区块的组合



而正则表达式,可以分为基础正则表达式和扩展正则表达式
^            在行首搜索,grep -n '^abc' file.txt      在file.txt中搜索以abc开始的行
$            在行尾搜索,grep -n '^$' file.txt         搜索空行
.               点号,代表任意一个字符,必须有一个
\               反斜杠,去除特殊符号的特殊意义,grep -n \' file.txt 搜索‘
*               前一个字符重复0次或多次
\{n,m\}      前一个字符重复n - m 次,如果没有m,则代表无上限
[ ]              字符集合,---- [ ] 仅代表一个待搜索的字符,需要范围时[2-4,a-g]
grep -n 'g[lde]g' file.txt,搜索glg, gdg, geg
grep -n 'g[^lde]g' file.txt,搜索除glg, gdg, geg以外的其它模式,但两个g之间一定要有一个字符

这里要注意的是:
1、^字符是否在 [ ] 中,作用是不同的
2、*字符在正则表达式中的作用与其充当通配符时的作用不同
3、!(叹号)字符在正则表达式中并不是特殊字符

扩展正则表达式:
egrep 即 grep -E 的别名
+            前一个字符,重复1或多次,egrep -n 'go+gle' file.txt 搜索gogle, google, gooogle......
?            前一个字符,重复0或1次
|             用或的方式找出多个字符串, egrep -n 'abc|abd' file.txt 搜索abc或abd,---- |的两边没有空格
()            找出“用户组”字符串, egrep -n 'g(oo|la)d' file.txt 搜索good或glad
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值