强大的grep命令

grep是general regular expression parser 的缩写,我们可以把它简单理解为linux系统的一个搜索命令。接下来,直接上例子:

1.在某个文件中搜索指定字符串

在/etc/passwd文件中,搜索字符串guolei:

 
1grep 'guolei' /etc/passwd

注意,guolei的引号可以省略,但是如果搜索字符串中有空格或者你使用正则表达式,就需要加了。

2.在多个文件中搜索指定字符串

在当前目录中,搜索包含字符串guolei的文件:

 
1grep -r guolei *

注意:-r是recursive的缩写,表示递归的搜索。

在当前目录的.java文件中,搜索包含字符串guolei的文件:

 
1grep -r guolei *.java

有时候,我们的搜索结果可能比较多,我们可以结合less命令来展示结果:

 
1grep -r guolei *.java | less

或者搜索结果比较多,我们只需要列出文件名:

 
1grep -rl guolei *.java

还有一种需求比较常见,我们经常想找到某一个目录中,包含指定字符串的文件,注意上面的命令不可以递归查找。比如,我们想在当前目录下递归的查找所有.java文件中包含字符串guolei的文件:

 
1find . -type f -name *.java -exec grep -il guolei {} \;

3.搜索时忽略大小写

在搜索guolei时,忽略大小写:

 

 
1grep -ri guolei *

注意:-i是Ignore case的缩写,表示忽略大小写。

4.搜索结果中列出行号

在搜索结果中,列出字符串出现位置的行号码:

 
1grep -rn guolei *.java

注意-n是number的缩写,表示行号的意思。

5.反向搜索

实际开发中,还有一种情况比较常见,我们要在某个目录下搜索不包含某个字符串的文件:

 
1grep -riv guolei * | less

注意:-v是reverse的缩写,表示逆向的意思。上面的例子为在当前目录中搜索不包含guolei的文件。

6.在管道中使用grep

我们经常还会在管道命令中使用grep,这个最常见。比如我们要搜索目前系统中的mysql进程:

 
1ps -ef | grep mysql

或者列出当前目录以html结尾的文件:

 
1ls | grep 'html$'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值