grep命令详解:过滤来自一个文件或标准输入匹配模式内容。
除了 grep 外,还有 egrep。egrep 是 grep 的扩展,相当于 grep -E。
Usage: grep [OPTION]... PATTERN [FILE]...
选项 | 描述 |
---|---|
-E,--extended-regexp | 模式是扩展正则表达式(ERE) |
-i,--ignore-case | 忽略大小写 |
-n,--line-number | 打印行号 |
-o,--only-matching | 只打印匹配的内容 |
-c,--count | 只打印每个文件匹配的行数 |
-B,--before-context=NUM | 打印匹配的前几行 |
-A,--after-context=NUM | 打印匹配的后几行 |
-C,--context=NUM | 打印匹配的前后几行 |
--color[=WHEN] | 匹配的字体颜色 |
-v,--invert-match | 打印不匹配的行 |
[root@ken ~]# echo "this is ken THIS IS KEN" | grep -i 'ken'
this is ken THIS IS KEN
[root@ken ~]# echo "this is ken THIS IS KEN" | grep 'ken'
this is ken THIS IS KEN
2. -n,打印行号
[root@ken ~]# grep -n 'root' /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin
3. -o,只打印匹配的内容
[root@ken ~]# echo "this is ken THIS IS KEN" | grep -o 'ken'
ken
[root@ken ~]# echo "this is ken THIS IS KEN" | grep 'ken'
this is ken THIS IS KEN
4. -c,打印文件匹配的行数
[root@ken ~]# grep -c 'root' /etc/passwd
2
[root@ken ~]# grep 'root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
5. -B,打印匹配的前几行
[root@ken ~]# grep -B 3 'root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
--
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
6.-A,打印匹配的后几行
[root@ken ~]# grep -A 3 'root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
--
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
7.-C,打印匹配的前后几行
[root@ken ~]# grep -C 3 'root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
--
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
8. --color,在centos7中已经默认为 grep --color,在centos6中需要加上--color才会显示颜色
[root@ken ~]# alias grep
alias grep='grep --color=auto'
9. -v, 打印不匹配的行
[root@ken ~]# echo -e "hi
this is ken
ncie to meet you
bye " | grep -v 'ken'
hi
ncie to meet you
bye