强大的grep命令

举报
chenyu 发表于 2021/07/27 01:42:53 2021/07/27
【摘要】 强大的grep命令   网上关于grep命令的解释一搜一大堆,基本都是把man命令大致翻译了一下,说实话,看完就忘!个人认为,学习命令最好的方式就是模拟真实环境,写出一些可能用到的命令组合,然后慢慢消化,起码我就是这么过来的。一开始基本都是死记,然后再慢慢扩展视野,时间长了,积累也就多了。好了,进入正题,谈谈牛逼的grep命令。 &nbsp...
强大的grep命令
 
网上关于grep命令的解释一搜一大堆,基本都是把man命令大致翻译了一下,说实话,看完就忘!个人认为,学习命令最好的方式就是模拟真实环境,写出一些可能用到的命令组合,然后慢慢消化,起码我就是这么过来的。一开始基本都是死记,然后再慢慢扩展视野,时间长了,积累也就多了。好了,进入正题,谈谈牛逼的grep命令。  www.2cto.com  
 
grep是general regular expression parser 的缩写,我们可以把它简单理解为linux系统的一个搜索命令。接下来,直接上例子:
 
1.在某个文件中搜索指定字符串
 
在/etc/passwd文件中,搜索字符串guolei:
 
1
grep 'guolei' /etc/passwd
注意,guolei的引号可以省略,但是如果搜索字符串中有空格或者你使用正则表达式,就需要加了。
 
2.在多个文件中搜索指定字符串
 
在当前目录中,搜索包含字符串guolei的文件:
 
1
grep -r guolei *
注意:-r是recursive的缩写,表示递归的搜索。
在当前目录的.java文件中,搜索包含字符串guolei的文件:
 
1
grep -r guolei *.java
有时候,我们的搜索结果可能比较多,我们可以结合less命令来展示结果:
1
grep -r guolei *.java | less
或者搜索结果比较多,我们只需要列出文件名:
 
1
grep -rl guolei *.java
还有一种需求比较常见,我们经常想找到某一个目录中,包含指定字符串的文件,注意上面的命令不可以递归查找。比如,我们想在当前目录下递归的查找所有.java文件中包含字符串guolei的文件:
 
1
find . -type f -name *.java -exec grep -il guolei {} \;
3.搜索时忽略大小写
 
在搜索guolei时,忽略大小写:
 
1
grep -ri guolei *
注意:-i是Ignore case的缩写,表示忽略大小写。
 
4.搜索结果中列出行号
 
在搜索结果中,列出字符串出现位置的行号码:
 
1
grep -rn guolei *.java
注意-n是number的缩写,表示行号的意思。
 
5.反向搜索
 
实际开发中,还有一种情况比较常见,我们要在某个目录下搜索不包含某个字符串的文件:
 
1
grep -riv guolei * | less
注意:-v是reverse的缩写,表示逆向的意思。上面的例子为在当前目录中搜索不包含guolei的文件。
 
6.在管道中使用grep
 
我们经常还会在管道命令中使用grep,这个最常见。比如我们要搜索目前系统中的mysql进程:
 
1
ps -ef | grep mysql
或者列出当前目录以 html结尾的文件:
 
1
ls | grep 'html$'

文章来源: chenyu.blog.csdn.net,作者:chen.yu,版权归原作者所有,如需转载,请联系作者。

原文链接:chenyu.blog.csdn.net/article/details/52008667

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。