Linux三剑客命令常见用法之grep

来源:互联网 发布:软件项目标书 编辑:程序博客网 时间:2024/05/16 17:53

grep全称是Global Regular Expression Print,是一个能使用正则表达式文本过滤、搜索工具,并把匹配的行打印出来,grep使用权限是所有用户。

一、基本格式

grep  [-vioqABCE]  parttern  /DIR/PATH/FILE


二、常见用法

# grep root /etc/passwd查找到有root的行并打印出来# grep -v root /etc/passwd查找到没有root的行并打印出来# grep -i root /etc/passwd查找到有root的行并打印出来,忽略字母大小写# grep -o root /etc/passwd查找到有root本身并且打印出来# grep -q root /etc/passwd静默模式,不打印出来# grep -c root /etc/passwd显示出匹配到的列数# grep -n root /etc/passwd查找到有root的行,打印出来并显示行号# cat /etc/passwd | grep -f /tmp/text.txt 指定规则文件text.txt,并以此为规则从passwd中查找# grep -A root /etc/passwd查找到有root的行,并且与其后两行打印出来# grep -B root /etc/passwd查找到有root的行,并且与其前两行打印出来  # grep -C root /etc/passwd查找到有root的行,并将其前两行和后两行打印出来
# cat /etc/passwd | grep -E  "root|ming"查找root或者ming的行并打印出来

三、规则表达式

1、字符匹配
.匹配任意单个字符[n]匹配n字符(任意单个字符)[^n]匹配除n外的字符[:alpha:]匹配任意字符[:upper:]匹配任意大写字母[:lower:]匹配任意小写字母[:digit:]匹配任意数字[:space:]匹配所有空白字符[:punct:]匹配标点[:alnum:]匹配字符和数字

2、次数匹配

*匹配前面的字符任意次\?前面的字符可有可无\+匹配前面的字符至少一次\{n\}匹配前面的字符n次\{n,m\}匹配前面的字符n到m次

3、位置锚定

^行首锚定,位于最左侧$行尾锚定,位于最右侧\<词首锚定\>词尾锚定


四、几个练习

1、如果用户root存在,就显示其默认的shell程序

# id root && grep "^root\>" | cut -d: -f7

2、找出/etc/passwd中的两位数或三位数

# grep "\<[0-9]\{2,3\}\>" /etc/passwd

3、找出/etc/rd.d/rc.sysinit文件中至少以一个空白字符开头,且后面存在非空白字符的行

# grep "^[[:space:]]\+[^[:space:]]" /etc/rd.d/rc.sysinit

4、找出netstat -tan命令中 以LISTEN后跟0个、1个以及多个空白字符结尾的行

# netstat -tan | grep "LISTEN[[:space:]]*$"

5、找出用户名和bash名相同的行

# grep "\(^[[alnum]]\+\>\).*\1$"

6、找出root、centos和ming用户的行的用户名UID和shell

# grep -E "^(root|centos|ming)\>" /etc/passwd | cut -d: -f1,3,7


以上是本人记录一些浅显的用法,如有错误,请指正。