一、简介
Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。
1 | fgrep == grep -F |
二、格式
grep [OPTIONS] PATTERN [FILE...]
三、主要参数
grep 如果不加参数的话,则是会使用==普通的正则的表达式==进行匹配。
[options]主要参数:
帮助信息
1
2-V --version,显示版本
--help 显示帮忙信息模式选择
1 | -G --basic-regexp |
匹配控制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18-e pattern
--regexp=pattern
多条件匹配
-f file
--file=file
指定文件进行多条件匹配,一行为一个条件
-i/-y
--ignore-case
不区分大小写
-v
--invert-match
不显示包含匹配字符的所有行
-w
--word-regexp
只匹配整个单词,而不是字符串的一部分
-x
--line-regexp
只显示整行都匹配一般输出控制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15-c --count
只输出匹配行的计数
--color
将查找到的子符以有颜色的输出
-q --quiet/--silent
匹配字符不显示任何信息,如果有匹配到,返回状态码0;没有匹配则返回状态码为非0
-s --no-messages
不显示不存在或无匹配文本的错误信息。在第七版unix的系统下等同于-q,所以此参数建议不在要shell中使用
-o --only-matching
只输出文件中匹配到的部分
-l --files-with-matches
查询多文件时只输出包含匹配字符的文件名
-L --files-without-match
查询多文件时只输出不包含匹配字符的文件名输出行前缀控制
1
2
3
4
5
6
7
8-b --byte-offset
打印样式匹配所位于的字符或字节偏移,选项 -b -o 一般总是配合使用。并没有什么用处
-H --with-filename
查询多文件时会显示文件名,这是默认的选项
-h --no-filename
查询多文件时不显示文件名
-n --line-number
显示匹配行及行号上下文控制
1 | -A num |
- 文件和目录控制
1 | -a --text,此用法等同于--binary-files=text |
三、实例
- -o 只显示匹配到的数据
1 | [op@PSR-17208 network-scripts]$ grep eth.* ifcfg-eth0 |
- -a 配合zgrep来使用
1 | [op@PSR-17208 network-scripts]$ tar zcvf /tmp/ifcfg.tgz ifcfg-* |
-F 使用普通字符串来查看
1
2
3[op@PSR-17208 network-scripts]$ echo "1.1.1.1" |fgrep '1.*'
[op@PSR-17208 network-scripts]$ echo "1.1.1.1" |grep '1.*'
1.1.1.1-A 显示匹配后 -B显示匹配前的数据 -C 显示前后行
1 | [op@PSR-17208 network-scripts]$ grep -n GATEWAY -A2 -B1 ifcfg-eth0 |
-e 指定多个匹配条件;可以参数-E;-f 将匹配条件放在文件下
1
2
3
4
5
6
7
8
9
10
11[op@PSR-17208 network-scripts]$ cat /tmp/a.txt
GATEWAY
NETMASK
[op@PSR-17208 network-scripts]$ grep -f /tmp/a.txt ifcfg-eth0
NETMASK=255.255.255.128
GATEWAY=218.75.158.2
[op@PSR-17208 network-scripts]$ grep -e -f /tmp/a.txt ifcfg-eth0
[op@PSR-17208 network-scripts]$ grep -e GATEWAY -e NETMASK ifcfg-eth0
NETMASK=255.255.255.128
GATEWAY=218.75.158.2-w 只显示全字符合的列 -x 只显示全列符合的列
1 | [op@PSR-17208 network-scripts]$ grep -w GATEWA ifcfg-eth0 |
- -r/-R 递归查询
1 | #在包涵的目录下查询 |
参考资料
官方文档:http://www.gnu.org/software/grep/manual/grep.html