linux下主要通配符与特殊字符如下:
* 代表0个或多个字符(或数字)
? 代表一个字母 ---- 数字不可以吗? 可以
# 注释,常用在脚本中
转义字符,将特殊字符或者通配符还原成一般字符
| 分隔两个管道
; 连续命令分隔
~ 用户的家目录
$ 变量之前需要加的,变量替换值
& 将命令变成后台工作
! 逻辑意义上的非,not
/ 路径分隔
> >> 输出导向
' 单引号,其中的变量不具有置换功能
" 双引号,其中的变量具有置换功能,即:单引号较双引号严格
` 撇号,Tab键上面那个字符,两个 ` 之间的命令可以先执行
() 中间为子shell的起始与结束
[] 中间为字符组合
{} 中间为命令区块的组合
而正则表达式,可以分为基础正则表达式和扩展正则表达式
^ 在行首搜索,grep -n '^abc' file.txt 在file.txt中搜索以abc开始的行
$ 在行尾搜索,grep -n '^$' file.txt 搜索空行
. 点号,代表任意一个字符,必须有一个
反斜杠,去除特殊符号的特殊意义,grep -n ' file.txt 搜索‘
* 前一个字符重复0次或多次
{nm} 前一个字符重复n - m 次,如果没有m,则代表无上限
[ ] 字符集合,---- [ ] 仅代表一个待搜索的字符,需要范围时[2-4a-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