一、通配符:
键盘上的符号,用来匹配符合条件的文件名【过滤文件名】 用来模糊搜索文件
- * :匹配任意多个字符或者0个字符
find /home -name "a*.out".
2. ? :匹配任意一个字符
ls a??.out
3. [ ] :匹配括号范围内的任意一个字符
ls a[1234].out ls a[123][12][456].out
4. [^] :匹配括号范围外的任意一个字符
ls a[^0-9].out
二、shell正则表达式 【过滤文本内容】
1、作用:用来匹配文件中符合规则的字符串
sed 、grep 、awk等命令都支持正则表达式
2、分类:1>.基本的正则表达式 Basic regEX BRES
2>.扩展的正则表达式 Extended RegEX ERES
3>.Perl 正则表达式 Perl RegEX PRES
3、类型
1) * :匹配前一个字符0次或多次
egrep “中国*” a.out
2) + :匹配前一个字符1次或多次 【需要转义】
egrep "中+“ a.out
grep -E "中+“ a.out
grep "中\+“ a.out
3) ? :匹配前一个字符0次或1次 【需要转义】
sed -nE '/中国?/p' a.out
4). :匹配任意一个字符(一个点)
.. :匹配任意两个字符(两个点)
sed -n '/^123.*abc$/p' a.out
5)^ : 匹配行首
6) $ :匹配行尾
7) {n} :匹配前一个字符n次 【需要转义】
sed -n '/^123.\{2,5}abc$/p' a.out
sed -nE '/^123.{2,5}abc$/p' a.out
8) {n,} :匹配前一个字符大于等于n次 【需要转义】
9) {m,n} :匹配前一个字符至少m次,之多n次 【需要转义】
10) [ ] :匹配范围内的任意一个字符
11) [ ^] :匹配范围外的任意一个字符
12) ( ) :匹配一个单元 【需要转义】
13) \b :匹配单词边界
14) | :交替运算符 【需要转义】
X|Y :要么匹配X,要么匹配Y
4、实战
1>过滤手机号:
egrep -o "(135|155|177)[0-9]{8}" a.out
或 egrep -o 1[(35)|(55)|(77)][0-9]{8} a.out
2>过滤身份证号:
egrep -o 411[0-9]{14}[0-9x] a.out
3>过滤ip地址:
egrep -o "(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])" 文件名