一、grep命令
定义:grep命令用于查找文件中的特定模式,并输出包含搜索模式的所有结果,用于快速搜索匹配模式的简单工具
1.各个选项
grep -o时,命令行只输出匹配的文本
grep -v时,命令行只输出没有匹配的文本行
grep -R -r时,匹配目录下的所有文件
grep -f和-v时,一般用于对比两个文件,输出两个文件相同行和不同行
grep -c时,用于计算某个字符串出现的次数
grep -i时,忽略大小写
grep -n时,输出行号
grep -w时候,被匹配的文本只能是指定的单词,而不能是单词中的某一部分
grep -A 10 'xxx'时,取该出现的字符串后十行数据(after)
grep -B 10 'xxx'时,取该出现的字符串前十行数据(before)
grep -C 10 'xxx'时,取取该出现的字符串前后十行数据(context)
2.原始文件
[root@anlysis data]# cat study
andy china sum 55590
andy canada sum 5590
andy america sum 55590
andy japan sum 55590
andy keor sum 55590
3.实例操作
1、grep -o时,命令行只输出匹配的文本
[root@anlysis data]# grep -o 'andy' study
andy
andy
andy
andy
andy
2、grep -v时,命令行只输出没有匹配的文本行
[root@anlysis data]# grep -v 'china' study
andy canada sum 5590
andy america sum 55590
andy japan sum 55590
andy keor sum 55590
3、grep -R -r时,匹配目录下的所有文件(这里复制了一份一样的文件,所以是两行)
[root@anlysis data]# grep -R 'china' /data/data/
/data/data/study:andy china sum 55590
/data/data/twostudy:andy china sum 55590
4、grep -c时,用于计算某个字符串出现的次数
[root@anlysis data]# grep -c 'andy' study
5、grep -i时,忽略大小写
[root@anlysis data]# grep -i 'andy' twostudy
ANDY china sum 55590
andy canada sum 5590
andy america sum 55590
andy japan sum 55590
andy keor sum 55590
6、grep -n时,输出行号
[root@anlysis data]# grep -n 'andy' study
1:andy china sum 55590
2:andy canada sum 5590
3:andy america sum 55590
4:andy japan sum 55590
5:andy keor sum 55590
7、grep -w时候,被匹配的文本只能是指定的单词,而不能是单词中的某一部分(可以看到一定要符合一模一样的才会打印)
[root@anlysis data]# grep 'and' study
andy china sum 55590
andy canada sum 5590
andy america sum 55590
andy japan sum 55590
andy keor sum 55590
[root@anlysis data]# grep -w 'andy' study
andy china sum 55590
andy canada sum 5590
andy america sum 55590
andy japan sum 55590
andy keor sum 55590
[root@anlysis data]# grep -w 'and' study
[root@anlysis data]#
8、grep -A 2 'xxx'时,取该出现的字符串前2行数据(after)
[root@anlysis data]# grep -A 2 'canada' study
andy canada sum 5590
andy america sum 55590
andy japan sum 55590
9、grep -B 2 'xxx'时,取该出现的字符串前2行数据(before)
[root@anlysis data]# grep -B 2 'japan' study
andy canada sum 5590
andy america sum 55590
andy japan sum 55590
10、grep -C 2 'xxx'时,取取该出现的字符串前后2行数据(context)
[root@anlysis data]# grep -C 1 'japan' study
andy america sum 55590
andy japan sum 55590
andy keor sum 55590