grep搜索查找命令
grep命令是Linux系统中一个强大的文本搜索工具。根据个人鄙陋的一点经验来说,这是一个程序员在Linux系统最常用的几个命令之一。举个使用频率能和其并驾齐驱的命令,比如:cd。grep就像程咬金的“三板斧”,在debug时,抡起grep,再顽固的bug也会无所遁形的。
常用参数
执行 man grep 可以看到grep有非常多的参数。下面介绍一下,一些个人感觉比较常用的。
短参数 | 长参数 | 说明 | 速记 |
---|---|---|---|
--color[=WHEN]
|
输出文本的颜色控制,when有三个值:never:不着色, always:全部着色,auto:着色 | ||
-l |
--files-without-match
|
只输出匹配内容所在的文件名 | |
-L |
--files-with-matches
|
只输出未匹配内容所在的文件名 | |
-H |
--with-filename
|
显示匹配的文件名,有多个文件时,该配置默认开启 | |
-h |
--no-filename
|
不显示匹配的文件名 | |
-n |
--line-number
|
显示匹配文本的行数 | n是line number,就是行号 |
-A NUM |
--after-context=NUM
|
显示匹配文本后面的NUM行 | A是after,后面 |
-B NUM |
--before-context=NUM
|
显示匹配文本前面的NUM行 | B是before context,前面 |
-C NUM,-NUM |
--context=NUM
|
显示匹配文本前后的NUM行 | C是context,上下文 |
-i |
--ignore-case
|
忽略大小写 | i是ignore-case,是小写的i哈 |
-r |
--recursive
|
递归匹配目录下的所有文件 |
使用场景举例
color参数
如果grep的默认配置没有对匹配文本进行着色。则我们可以使用--color=auto
参数进行配置,则会对已经匹配的文本进行着色。
但当我们使用管道命令,进行多次grep过滤时,--color=auto
是只对最后一次匹配进行着色的。如果我们想把所有的匹配都进行着色,那我们就可以使用--color=always
进行设置,样例如下:
# 无颜色
echo "这是颜色测试,红色,蓝色" |grep "红色"
# “红色”被着色
echo "这是颜色测试,红色,蓝色" |grep "红色" --color=auto
# 都没有颜色
echo "这是颜色测试,红色,蓝色" |grep "红色" --color=auto|grep "蓝色"
# “红色”和“蓝色”都被着色
echo "这是颜色测试,红色,蓝色" |grep "红色" --color=always|grep "蓝色" --color=always
只输出匹配内容的文件名
如果拿到匹配内容的文件名,然后再对文件进行处理,则可以使用-l
参数。比如想找到符合条件的文件内容的。
日常的进程查看
日常系统运维监控的时候,我们想看看某个进程是否查看。如果想查看是否有java进程,可以执行如下命令:
ps aux|grep java
# 当然这里也可以用jps
进程的杀死
比如我们重启程序的时候,总需要先判断程序在不在。假设系统有很多个java程序,我们多次进行过滤,然后结合xargs和awk命令进行进程杀死。命令如下:
ps aux|grep java|grep com.shuanghu.App|awk '{print $2}'|xargs kill
awk '{print $2}'
表示按空格分割,取第二列,正好是进程号。
查看网络端口号
查看当前系统侦听的所有端口号。命令如下:
netstat -ano|grep LISTEN
debug查看日志
在程序的调试过程中,查看日志,是debug的第一步。如果在日志文件里快速找到需要的日志呢。如果是java语言,则可以使用grep Exception
在日志文件里快速定位日志发生的位置。默认grep只显示一行是远远不够的。我们还需要了解bug发生时的上下文,则可以使用grep Exception -C 10
查看上下10行的日志。命令如下:
grep Exception -C 10
debug查看动态日志
tail命令是Linux系统提供的一个文件查看命令。tail命令支持-f
参数,能够滚动查看文件最新的变化内容。但tail -f
只是把文件所有变化内容动态输出。太多的日志,我们是无法进行debug的。那这个时候,grep就能大显身手。我们可以通过管道和grep命令,只显示我们关心的指定包名的动态日志。命令如下:
tail -f 日志.log | grep a.b.c.name
总结
在面对纷扰无序的文本时,如果想快速找到你关心的信息,grep是首选命令。本文先介绍grep基本匹配内容。如果有良好的正则基础,那grep加正则表达式,基本能让你在黑框框里所向披靡,一往无前。
不是经验的经验
在Linux的命令行操作过程中,尤其是grep命令时,我们经常会使用管道|
,但由于黑框下,全角和半角的区分不明显。所以下面两个命令看似相同却输出不同。
shuanghu:~ shuanghu$ echo "aa" |grep "aa"
aa
shuanghu:~ shuanghu$ echo "aa" |grep "aa"
aa |grep aa
因为第一个是半角,所以是管道,执行了grep命令;而第二个都成了echo的参数,所以进行了输出。
grep搜索查找命令相关推荐
- linux文件搜索查找命令
linux文件搜索查找命令 1.grep 功能描述 grep 命令在一个或多个文件中查找与指定模式匹配的字符串.如果模式里包含有空格,必须用引号括起来.grep的模式只能是一个被引号括起来的字符串或者 ...
- Linux搜索查找命令【详细整理】
目录 Linux下文件搜索.查找.查看命令 find find [搜索范围][选项] find /home -name 'hello.txt' find /home -user root ...
- Linux命令五---搜索查找命令---find-grep-which-whereis等---网络通信命令--ifconfig-netstat等
版权声明:本文为博主原创文章,未经博主允许不得转载!! 欢迎访问:https://blog.csdn.net/qq_21439395/article/details/82012049 交流QQ: 82 ...
- Linux搜索查找命令合集
目录 find locate grep 和 | find 作用: 将指定目录向下递归地遍历其各个子目录,将满足条件的文件或目录显示在终端. 基本语法: find [搜索范围] [参数] 常用参数: - ...
- where is java_Linux下的搜索查找命令的详解(whereis)
2.whereis 和find相比,whereis查找的速度非常快,这是因为linux系统会将 系统内的所有文件都记录在一个数据库文件中,当使用whereis和下面即将介绍的locate时,会从数据库 ...
- 【Linux基础】四、常用基本命令——文件权限类(ls -al,chmod,chown,chgrp)、搜索查找类(find,locate,grep,wc,which)
文件权限命令.搜索查找命令 4.6 ```文件权限类``` 4.6.1 文件属性 4.6.2 chmod 改变权限 4.6.3 chown 改变所有者 4.6.4 chgrp 改变所属组 ```4.7 ...
- php m grep event,linux grep (linux查找关键字在php出现的次数)
http://www.th7.cn/system/lin/201508/127681.shtml 查找CleverCode在当前目录以及子目录,所有的php出现大于0的次数. # find -type ...
- linux find 循环查找,Linux下的find查找命令
Linux下的查找命令有:which(查看可执行文件的位置),whereis(查看指定文件的位置),locate(配合数据库查找指定文件的内容).find(在磁盘上查找文件).grep(使用正则表达式 ...
- Linux 命令(一) findgrep文件查找命令
Linux 命令(一) find&grep文件查找命令 查找命令:find & grep 区别:(1) find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为 ...
最新文章
- cve-2017–10271 XMLDecoder 反序列化漏洞 原理分析
- 开源:Sagit.Framework For IOS 开发框架
- 哈夫曼编码之大根堆小根堆揭西县
- 题库练习4(提取不重复的数字、字符个数统计、数字颠倒、字符串反转)
- MongoDB 优化器profile
- JAVA EE 6 jar包集合_Java EE6将JSF facelets(xhtml)和ManagedBeans打包成JAR
- 借助xUnit减少了生产问题
- 信息系统项目管理05——项目范围管理
- java底层实现分页
- 【车间调度】基于matlab粒子群算法求解车间生产调度问题【含Matlab源码 245期】
- 计算机考研专业课408什么意思,考研408是什么意思
- Centos8上安装中文字符集zh_CN.UTF-8
- 深入理解Spring----PostConstruct和PreDestroy
- 小学生计算机的起源与发展ppt,计算机的起源与发展历程ppt课件.ppt
- Maven基础5:Maven基本概念,仓库配置(在setting中配置本地仓库 和 远程仓库);全局setting和局部setting;
- PAT 大区赛 1-7古风排版
- iDoctor李旭东:打造管理慢性病的平板电脑
- c语言imagesize怎么用里面的参数如何填写,【学习笔记】【C语言】sizeof
- java导出mpp格式_tensorflow 模型导出总结
- cz3592航班动态_今天起 民航开启冬春季航班计划 上海机场新增通航点23个