每天一个Linux命令之grep

@author: StormMa
@date 2017-08-03


生命不息,奋斗不止


接着昨天的,今天温习一下grep这个强大的搜索命令,配合ps分析进程美滋滋。

前言

grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。Unix的grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的扩展,支持更多的re元字符, fgrep就是fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义,不再特殊。linux使用GNU版本的grep。它功能更强,可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。

grep常用用法

1
2
3
4
usage: grep [-abcDEFGHhIiJLlmnOoqRSsUVvwxZ] [-A num] [-B num] [-C[num]]
[-e pattern] [-f file] [--binary-files=value] [--color=when]
[--context[=num]] [--directories=action] [--label] [--line-buffered]
[--null] [pattern] [file ...]
ps命令实战
  1. 查找文件关键字
1
grep mirror ~/.m2/settings.xml

或者使用管道

1
cat ~/.m2/settings.xml | grep mirror

  1. 查找关键字所在的行,并且显示行号
1
grep -n mirror ~/.m2/settings.xml

当然也可以:

1
cat ~/.m2/settings.xml | grep -n mirror

  1. 关键词颜色显示
1
grep --color=auto -n mirror ~/.m2/settings.xml

  1. 筛选不包含关键词的行
1
grep -v mirror ~/.m2/settings.xml

  1. 筛选不包含多个关键词的行
1
grep -nv mirror ~/.m2/settings.xml | grep -nv id

  1. 查找关键词前后几行包括关键词所在行
1
grep -A1 -B1 -n id ~/.m2/settings.xml

  1. 递归查找目录
1
2
3
grep 'id' * #在当前目录搜索带'id'行的文件
grep -r 'id' * #在当前目录及其子目录下搜索'id'行的文件
grep -l -r 'id' * #在当前目录及其子目录下搜索'id'行的文件,但是不显示匹配的行,只显示匹配的文件
  1. grep与正则
1
grep -n 'mirror[>s]' ~/.m2/settings.xml

关于更多正则的例子就不举了。egrep命令支持更多的正则字符集。grep命令就总结到这,常用的已经全部包括了。明天继续,嘿哈.