grep简介
grep全程Globally search a Regular Expression and print,是一种强大的文本搜索工具,它能使用特定模式匹配(包括正则表达式)搜索文本,并默认输出匹配行。unix的grep家族包括grep和egrep。
工作模式
工作方式
grep在一个或者多个文件中搜索字符串模板
如果模板中包括空格,需要使用引号引起来
模板后的所有字符串会被看作是文件名
工作结果如果模板搜索成功,则返回0状态码。
如果搜索不成功,则返回1状态码
如果搜索的文件不存在,则返回2的状态码。
grep常用参数
# cp /etc/passwd . 【复制文件到当前目录】
# vim passwd 【修改当前文件的内容】
# grep root passwd 【在passwd文件搜索root相关的内容】
-e 过滤多个字符
# grep -e root -e lee passwd
-E 扩展表达式
grep -E "leelroot" passwd 【也是可以过滤多个字符】
-n 过滤显示行
-w 按单词过滤,及相等而非相似
grep -w root passwd 【过滤包含root单词的行】
-o 只显示匹配内容
-v显示不匹配内容
# grep -nvE "lee|root" passwd 【显示不含有lee和root的行】
-c 统计行数
# grep -c root passwd 【显示包含root的行数】
显示搜索内容周围行
# grep -n2 sys passwd 【显示含有sys关键字及其周围的2行,或****(-2n)(-2 -n)****】
# grep -n A1 sys passwd 【显示含有sys的行以及下1行】
# grep -n B1 sys passwd 【显示含有sys的行以及上1行】
正则表达式的使用
什么是正则表达式
正则表达式就是用在字符串的处理上面的一项表示式
在做程序设计时很多需要对一类字符进行处理,正则表达式就完美的解决了这个问题
基本与扩展正则表达式基本正则表达式(Basic Regular Expression, BRE),又称为标准正则表达式,是最早制订的正则表达 式规范,仅支持最基本的元字符集。基本正则表达式是POSIX规范制订的两种正则表达式语法标准之---,另外一种语法标准称为扩展正则表达式
扩展正则表达式(Extended Regular Expression,ERE)支持比基本正则表达式更多的元字符
在grep命令使用基本正则表达式时不需要加任何参数
在grep命令使用扩展正则表达式时必须加-E参数
# cd /mnt/# vim test
^ 字符 以开头搜索
字符 $ 以结尾搜索
. 字符 表示字符前单个的 . 匹配任意字符
\] 显示匹配字符  \^\[ \] 显示以字符开头的  \[\^ \] 显示不匹配的字符  \* 表示出现任意次的字符  ****.**** + 表示必须有1个字符  ****.****{ m , n } 表示字符出现m到n次  . ? 字符出现0到1次  ( mn ) 显示有mn的字符  ( m\|n ) 显示m或n的字符  \\ 将特殊字符失效 ****# vim test****  ****# grep -E '**** ****e**** ****\\$**** ****' test**** 【test文件搜索e开头,中间有 ****$**** 的字符】  "\\\
" \\\<表示lee前有字符的不搜索,\\\>表示lee后有字符的不搜索 ****# grep -E "\\\ " passwd**** 【搜索有单独lee的字符】   正则表达式字符集  ****# touch ealee eAlee "ea lee" "ea@lee" "ea8lee"**** ****# rm -fr e\[\[:alpha:\]\]lee**** 【删除e+任意字符+lee,如ealee,eAlee】 ****# rm -fr e\[\[:alpha:\]\]lee**** 【删除e+大写字符+lee】