1作用
linux 操作系统中 grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行进行打印,grep全称是Global Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。
2格式
grep [option]
3主要参数
[option]主要参数:
-c: 只输出匹配航的计数。
-i:不区分大小写(只适用于单字符)。
-h:查询多文件时不显示文件名。
-l :查询多文件时只输出包含匹配字符的文件名。
-n:显示匹配行及行号。
-s:不显示不存在或者无匹配文本的错误信息。
-v :显示不包含匹配文本的所有行
pattern正则表达式主要参数
\:忽略正则表达式中特殊|字符的原有含义
^:匹配正则表达式的开始行
$:匹配正则表达式的结束行
\<:从匹配正则表达式的行开始
\>:到匹配正则表达式的行结束
[ ]:单个字符,如[a]即a符合要求
[ - ]:范围,如[a-z],即a,b,c一直到z都符合要求
。:所有单个字符
*:有字符,长度可以为0
4、举例
# ps -ef | grep in.telnetd
root 19955 181 0 13:43:53 ? 0:00 in.telnetd
# more size.txt size文件的内容
b124230
b034325
a081016
m7187998
m7282064
a022021
a061048
m9324822
b103303
a013386
b044525
m8987131
B081016
M45678
B103303
BADc2345
# more size.txt | grep '[a-b]' 范围 ;如[A-Z]即A,B,C一直到Z都符合要求
b124230
b034325
a081016
a022021
a061048
b103303
a013386
b044525
# more size.txt | grep '[a-b]'*
b124230
b034325
a081016
m7187998
m7282064
a022021
a061048
m9324822
b103303
a013386
b044525
m8987131
B081016
M45678
B103303
BADc2345
# more size.txt | grep 'b' 单个字符;如[A] 即A符合要求
b124230
b034325
b103303
b044525
# more size.txt | grep '[bB]'
b124230
b034325
b103303
b044525
B081016
B103303
BADc2345
# grep 'root' /etc/group
root::0:root
bin::2:root,bin,daemon
sys::3:root,bin,sys,adm
adm::4:root,adm,daemon
uucp::5:root,uucp
mail::6:root
tty::7:root,tty,adm
lp::8:root,lp,adm
nuucp::9:root,nuucp
daemon::12:root,daemon
# grep '^root' /etc/group 匹配正则表达式的开始行
root::0:root
# grep 'uucp' /etc/group
uucp::5:root,uucp
nuucp::9:root,nuucp
5.ps: 正则表达式的应用
(1)正则表达式的应用 (注意:最好把正则表达式用单引号括起来)
grep '[239].' data.doc #输出所有含有以2,3或9开头的,并且是两个数字的行
(2)不匹配测试
grep '^[^48]' data.doc #不匹配行首是48的行
(3)使用扩展模式匹配
grep -E '219|216' data.doc
(4) ...
这需要在实践中不断应用和总结,熟练掌握正则表达式。
6.使用类名
可以使用国际模式匹配的类名:
[[:upper:]] [A-Z]
[[:lower:]] [a-z]
[[:digit:]] [0-9]
[[:alnum:]] [0-9a-zA-Z]
[[:space:]] 空格或tab
[[:alpha:]] [a-zA-Z]
如:grep '5[[:upper:]][[:upper:]]' data.doc #查询以5开头以两个大写字母结尾的行