Life with teacher Lemon.

Linux grep 命令详解

2021.03.25 | 共 1168 字,阅读需约 3 分钟.

grep 命令是 Linux 上一款强大的文本内容搜索命令,你可以使用它在给定的文件或者文件夹中,快速的查找到符合指定内容或者符合某个正则的文本内容并打印,多用于定位问题时使用。

测试文件

$ cat demo.text
大江东去,浪淘尽,千古风流人物。
故垒西边,人道是:三国周郎赤壁。
乱石穿空,惊涛拍岸,卷起千堆雪。
江山如画,一时多少豪杰。

遥想公瑾当年,小乔初嫁了,雄姿英发。
羽扇纶巾,谈笑间、樯橹灰飞烟灭。
故国神游,多情应笑我,早生华发。
人生如梦,一尊还酹江月。

查找指定内容

通常格式为 grep '要查找的字符串' 指定要查找的文件, 打印出符合要求的行内容

$ grep '小乔' demo.txt
遥想公瑾当年,小乔初嫁了,雄姿英发。

查找指定内容下面 N 行

grep -A 2 '要查找的字符串' 指定要查找的文件

$ grep -A 2 '小乔' demo.txt
遥想公瑾当年,小乔初嫁了,雄姿英发。
羽扇纶巾,谈笑间、樯橹灰飞烟灭。
故国神游,多情应笑我,早生华发。

查找指定内容上下 N 行

grep -C 2 '要查找的字符串' 指定要查找的文件

$ grep -C 2 '小乔' demo.txt
江山如画,一时多少豪杰。

遥想公瑾当年,小乔初嫁了,雄姿英发。
羽扇纶巾,谈笑间、樯橹灰飞烟灭。
故国神游,多情应笑我,早生华发。

查找不包含指定内容的行

grep -v '要排除的内容' 指定要查找的文件

$ grep -v '小乔' demo.txt
大江东去,浪淘尽,千古风流人物。
故垒西边,人道是:三国周郎赤壁。
乱石穿空,惊涛拍岸,卷起千堆雪。
江山如画,一时多少豪杰。

羽扇纶巾,谈笑间、樯橹灰飞烟灭。
故国神游,多情应笑我,早生华发。
人生如梦,一尊还酹江月。

查找包含指定内容 A 或者 B 的行

grep -E 'A|B' 指定要查找的文件

$ grep -E '小乔|周郎' demo.txt
故垒西边,人道是:三国周郎赤壁。
遥想公瑾当年,小乔初嫁了,雄姿英发。

# 同类命令 egrep 'A|B' file
$ egrep '小乔|周郎' demo.txt
故垒西边,人道是:三国周郎赤壁。
遥想公瑾当年,小乔初嫁了,雄姿英发。

# 同类命令 awk '/A|B/' file
$ awk '/小乔|周郎/' demo.txt
故垒西边,人道是:三国周郎赤壁。
遥想公瑾当年,小乔初嫁了,雄姿英发。

不区分大小写查找

grep -i '要查找的字符串' 指定要查找的文件

# 测试文件 demo2.txt
$ cat demo2.txt
AbCd
B
c
D

# 测试大小写查找
$ grep -i 'C' demo.txt
AbCd
c

搜索大招

grep -r '要查找的字符串' 指定目录

$ grep -r '小乔' ./
./demo.txt:遥想公瑾当年,小乔初嫁了,雄姿英发。

其他

# 列出含有指定内容的文件的文件名
$ grep -l '小乔' demo.txt demo2.txt
demo.txt

# 列出不含有指定内容的文件的文件名
$ grep -L '小乔' demo.txt demo2.txt
demo2.txt

# 列出行号
$ grep -n '小乔' demo.txt
6:遥想公瑾当年,小乔初嫁了,雄姿英发。

# 匹配查找整个单词
$ grep -w 'B' demo2.txt
B

# 打印匹配到的文件名和内容
$ grep -H '小乔' demo.txt
demo.txt:遥想公瑾当年,小乔初嫁了,雄姿英发。

# 统计包含指定内容的行数
$ grep -c '小乔' demo.txt
1
今日诗词