linux grep 命令

grep命令常见用法

在文件中搜索一个单词, 命令会返回一个包含”match_pattern”的问本行

1
2
3
grep match_pattern file_name
grep 'match_pattern' file_name
grep "match_pattern" file_name

在多个文件中查找

1
grep match_pattern file_1 file_2 file_3

输出除match_pattern之外的所有行内容 -v

1
grep -v match_pattern file_name

忽略匹配样式中的字符大小写

1
grep -i match_pattern

多个样式匹配 -E

1
2
3
grep -E 'match_pattern_1|match_pattern_2'
grep -E "match_pattern_1|match_pattern_2"
grep -e match_pattern_1 -e match_pattern_2

标记匹配颜色 ###–color=auto###

1
grep match_pattern file_name --color=auto

如何修改颜色呢?关于color的官方文档说明如下:

1
2
--color[=WHEN], --colour[=WHEN]
Surround the matched (non-empty) strings, matching lines, context lines, file names, line numbers, byte offsets, and separators (for fields and groups of context lines) with escape sequences to display them in color on the terminal. The colors are defined by the environment variable GREP_COLORS. The deprecated environment variable GREP_COLOR is still supported, but its setting does not have priority. WHEN is never, always, or auto.

环境变量GREP_COLOR参数如下

  • 30 black
  • 31 red
  • 32 green
  • 33 yellow
  • 34 blue
  • 35 purple
  • 36 cyan
  • 37 white

因此, .bashrc中添加

1
2
export GREP_OPTIONS='--color=auto'
export GREP_COLOR ='1;32'

选项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
-a 不要忽略二进制数据。
-A<显示列数> 除了显示符合范本样式的那一行之外,并显示该行之后的内容。
-b 在显示符合范本样式的那一行之外,并显示该行之前的内容。
-c 计算符合范本样式的列数。
-C<显示列数>或-<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。
-d<进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。
-e<范本样式> 指定字符串作为查找文件内容的范本样式。
-E 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。
-f<范本文件> 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。
-F 将范本样式视为固定字符串的列表。
-G 将范本样式视为普通的表示法来使用。
-h 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。
-H 在显示符合范本样式的那一列之前,标示该列的文件名称。
-i 忽略字符大小写的差别。
-l 列出文件内容符合指定的范本样式的文件名称。
-L 列出文件内容不符合指定的范本样式的文件名称。
-n 在显示符合范本样式的那一列之前,标示出该列的编号。
-q 不显示任何信息。
-R/-r 此参数的效果和指定“-d recurse”参数相同。
-s 不显示错误信息。
-v 反转查找。
-w 只显示全字符合的列。
-x 只显示全列符合的列。
-y 此参数效果跟“-i”相同。
-o 只输出文件中匹配到的部分。