grep

grep相关的命令:

1
2
3
4
grep
egrep == grep -E
fgrep == grep -F
rgrep == grep -r

grep:

1
2
grep [OPTIONS] PATTERN [FILE/DIR...]
grep [OPTIONS] [-e PATTERN | -f FILE] [FILE/DIR...]

options:

 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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# Matcher Selection
-G, --basic-regexp grep默认只支持BRE, 只能使用基本的RE
-E, --extended-regexp 选择ERE, 可以使用扩展的RE
# grep -E "pattern1|pattern2" 比如支持或运算
-F, --fixed-strings
-P, --perl-regexp perl RE

# Matching Control
-e PATTERN, --regexp=PATTERN    可以指定多个pattern
# grep -e pattern1 -e pattern2 filename 相当于或运算,满足一个就被过滤出来
-f FILE, --file=FILE    文件的每一行就是一个pattern.
-i, --ignore-case    忽略大小写
-v, --invert-match   忽略含有pattern的行
-w, --word-regexp    精确匹配一个单词
-x, --line-regexp    精确匹配一行
-y

# General Output Control
-c, --count    统计匹配到的行数
--color[=WHEN], --colour[=WHEN]    输出匹配的pattern高亮
-L, --files-without-match    列出没有匹配到的文件名
-l, --files-with-matches    列出匹配到的文件的文件名
# grep -rl pattern1 | xargs grep -r pattern2    相当于与运算,过滤同时满足两个pattern
-m NUM, --max-count=NUM
-o, --only-matching    只输出匹配的部分
# grep -o pattern filename | wc -l 统计匹配的行数
-q, --quiet, --silent    不打印查找的结果
-s, --no-messages

# Output Line Prefix Control
-b, --byte-offset    打印匹配的字符数或偏移量
-H, --with-filename
-h, --no-filename
--label=LABEL
-n, --line-number    打印匹配的行的行号
-T, --initial-tab
-u, --unix-byte-offsets
-Z, --null

# Context Line Control
-A NUM, --after-context=NUM    打印匹配到的行的后NUM行
-B NUM, --before-context=NUM    打印匹配到的行的前NUM行j
-C NUM, -NUM, --context=NUM    打印匹配到的行的前NUM行和后NUM行

# File and Directory Selection
-a, --text
--binary-files=TYPE
-D ACTION, --devices=ACTION
-d ACTION, --directories=ACTION
--exclude=GLOB    排除查找指定的文件
--exclude-from=FILE
--exclude-dir=DIR   排除查找指定的目录
-I
--include=GLOB     指定查找的文件
-r, --recursive    递归查找
-R, --dereference-recursive    递归查找
# grep -nR/-nr pattern filename    阅读源码可以递归查找并打印行号

# Other Options
--line-buffered
--mmap
-U, --binary
-z, --null-data

ack

ack/ack2是grep的升级版

ack:

https://github.com/beyondgrep/ack

ack2(ack-grep):

https://github.com/beyondgrep/ack2

ag

ack/ack2的升级版

https://github.com/ggreer/the_silver_searcher

安装:

1
2
$sudo apt-get install silversearcher-ag
$sudo yum install the_silver_searcher

使用:

1
$man ag