浅谈正则表达式
grep命令 文本过滤
例子: grep root /etc/passwd //挑选root出来
-m # 匹配#次后停止
-v显示不被pattern匹配到的行
-I 忽略字符大小写
-n显示匹配的行号
-c统计匹配的行数
-o 仅显示匹配到的字符串 静默模式
-A #after ,后#行
输出任何信息 after, 后#行
-w 匹配整个单词
-E 使用ERE
-v 所有不包含的
-F 使用ERE 相当于fgrep,不支持正则表达式
BRE(基础正则表达式)只承认的元字符有^$.[]其他字符识别为普通字符:()
ERE(扩展正则表达式)则添加了(){}?+| 等
只有在用反斜杠“”进行转义的情况下,字符(){} 才会在BRE被当作元字符处理,而ERE中,任何元符号前面加上反斜杠反而会使其被当作普通字符来处理。
^word搜索以word开头的内容 // grep “^r” /etc/passwd
$ word$搜索以word结尾的内容 // gerp “nologin $” /etc/passwd
" ^ $ " 代表的是空行 // grep -n “^$” 1.txt //n 代表输出序号
. 代表且只能代表任意一个字符(不匹配空行)//grep “.t” passwd
\ 转义字符,让有特殊含义的字符脱掉马甲,现出原形,如 \ .只表示小数点
*重复之前的字符或文本0个或多个,之前的文本或字符连续0次或多次
( ^. * ) 以任意多个字符串开头,.*尽可能多,有多少算多少,贪婪性
// grep “^.*o” 1.txt //o之前的都出现
[abc][0-9][.,/] 匹配字符集合内的任意一个字符a或b或c:[a-z]匹配所有小写字母;表示一个整体,内藏无限可能;[abc]找a或b或c可以写成[a-c]
// grep " ^ [dps] " passwd //匹配以dps任意一个字母开头的句子
[ ^ abc] 匹配不包含^后的任意字符a或b或c,是对[abc]的取反,且与 ^含义不同
a\ {n,m\ } 重复前面a字符n或m次(如果用egrep或sed -r可去掉斜线)
//grep “a{2,3}” 1.txt
a{n,} 重复前面a字符至少n次,如果用egrep或sed -r可去掉斜线
a{n} 重复前面a字符n次,如果用egrep或sed -r可去掉斜线
grep -E //等于支持正则,不需要再加\