一、linux grep命令详解

这篇具有很好参考价值的文章主要介绍了一、linux grep命令详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1. grep【擅长在文件中匹配文本】

    1.1 命令参数

     1.1.1 用法举例

    1.2 grep搭配管道使用

     1.2.1 grep和cat搭配管道

     1.2.2 grep和ps搭配管道

    1.3 扩展

      1.3.1 常见的正则表达式

      1.3.2 用于egrep 和 grep -e 的元字符扩展集


1. grep【擅长在文件中匹配文本】

grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来(匹配的标红)

  • 语法:grep [options] pattern [file...]
  • 简介:常用来做全局数据的查询定位(最擅长文本过滤)

    1.1 命令参数

  • -A<显示行数>:显示匹配行及后面n行内容
  • -B<显示行数>:显示匹配行及前面n行内容
  • -C<显示行数>:显示匹配行及前后n行内容
  • -E:扩展的正则表达式,相当于egrep(可以识别特殊正则符号)
  • -l:列出匹配文件内容的文件名
  • -L:列出不匹配文件内容的文件名
  • -e:实现多个选项间的逻辑or关系,或者使用egrep

              egrep '^root|bash$' passwd

              grep -e '^abc' -e 'b$' oldboy.txt

  • -i:字符忽略大小写
  • -c:统计匹配成功的行数
  • -n:显示匹配的行号
  • -r:进行递归查找子目录中的文件
  • -v:显示不被pattern匹配到的行,相当于[^]反向匹配(进行匹配信息取反过滤操作) 

       grep -v '^$':过滤空白行(^$ 表示从首到尾;-v取反,即该命令作用:过滤空白行/符) 

  • -o:只显示匹配到的字符串
  • -q:静默模式,不输出任何信息
  • -s:不显示错误信息
  • -w:只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’)
  • --color:匹配到的关键词会高亮显示

       grep xxx ---color=auto   --- 查询关键字高亮显示

  • \< \>分别标注单词的开始与结尾(类似模糊查询)

       grep man /oldboy/oldboy.txt          ---会匹配man、manic、batman

       grep '\<man' /oldboy/oldboy.txt     --- 会匹配manic

       grep 'man\>' /oldboy/oldboy.txt     --- 会匹配batman

       grep '\<man\>' /oldboy/oldboy.txt  --- 只会匹配man

     1.1.1 用法举例

前期准备:

[root@hero ~]# cat /oldboy/oldboy.txt 
01 oldboy
02 oldgirl
03 oldbaby
04 man
05 manical
06 batman


1. 命令参数之【-A:显示匹配行及后面n行内容】

[root@hero ~]# grep -A 2 'oldbaby' /oldboy/oldboy.txt 
03 oldbaby
04 man
05 manical


2. 命令参数之【-B:显示匹配行及前面n行内容】

[root@hero ~]# grep -B 2 'manical' /oldboy/oldboy.txt 
03 oldbaby
04 man
05 manical


3. 命令参数之【-C:显示匹配行及前后n行内容】

[root@hero ~]# grep -C 2 'oldbaby' /oldboy/oldboy.txt 
01 oldboy
02 oldgirl
03 oldbaby
04 man
05 manical


4. 命令参数之【-E:扩展的正则表达式,相当于egrep(可以识别特殊正则符号)】

[root@hero ~]# grep -E 'old.*' /oldboy/oldboy.txt 
01 oldboy
02 oldgirl
03 oldbaby


5. 命令参数之【-l:列出匹配文件内容的文件名】

[root@hero ~]# grep -l 'oldboy' /oldboy/*
/oldboy/oldboy.txt


6. 命令参数之【-L:列出不匹配文件内容的文件名】

[root@hero ~]# grep -L 'oldboy' /oldboy/*
/oldboy/oldbaby.txt
/oldboy/oldgirl.txt


7. 命令参数之【-e:实现多个选项间的逻辑or关系,或者使用egrep】

[root@hero ~]# grep -e 'oldboy' -e 'manical' /oldboy/oldboy.txt
01 oldboy
05 manical

#使用egrep命令:

[root@hero ~]# egrep 'oldboy|manical' /oldboy/oldboy.txt 
01 oldboy
05 manical


8. 命令参数之【-i:字符忽略大小写】

[root@hero ~]# grep -i 'OLDBOY' /oldboy/oldboy.txt
01 oldboy


9. 命令参数之【-c:统计匹配成功的行数】

[root@hero ~]# grep -c 'man' /oldboy/oldboy.txt
3


10. 命令参数之【-n:显示匹配的行号】

[root@hero ~]# grep -n 'man' /oldboy/oldboy.txt
4:04 man
5:05 manical
6:06 batman


11. 命令参数之【-r:进行递归查找子目录中的文件】

[root@hero ~]# grep -r 'ma' /oldboy/
/oldboy/oldboy.txt:04 man
/oldboy/oldboy.txt:05 manical
/oldboy/oldboy.txt:06 batman
/oldboy/oldgirl.txt:math


12. 命令参数之【-v:显示不被pattern匹配到的行,相当于[^]反向匹配(进行匹配信息取反过滤操作)】

[root@hero ~]# grep -v 'ma' /oldboy/oldboy.txt 
01 oldboy
02 oldgirl
03 oldbaby


13. 命令参数之【-o:只显示匹配到的字符串】

[root@hero ~]# grep -o 'cal' /oldboy/oldboy.txt 
cal


14. 命令参数之【-q:静默模式,不输出任何信息】

[root@hero ~]# grep -q 'man' /oldboy/oldboy.txt


15. 命令参数之【-s:不显示错误信息】

[root@hero ~]# grep 'man' /oldboy/oldboy
grep: /oldboy/oldboy: 没有那个文件或目录

[root@hero ~]#grep -s 'man' /oldboy/oldboy


16. 命令参数之【-w:只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’)】

[root@hero ~]# grep -w 'man' /oldboy/oldboy.txt 
04 man


17. 命令参数之【\< :匹配单词的开头】

[root@hero ~]# grep '\<man' /oldboy/oldboy.txt 
04 man
05 manical


18. 命令参数之【\>:匹配单词的结尾】

[root@hero ~]# grep 'man\>' /oldboy/oldboy.txt 
04 man
06 batman


19. 同时使用\< \>

[root@hero ~]# grep '\<man\>' /oldboy/oldboy.txt 
04 man

    1.2 grep搭配管道使用

     1.2.1 grep和cat搭配管道

[root@hero ~]# cat /oldboy/oldboy.txt |grep oldboy
01 oldboy

     1.2.2 grep和ps搭配管道

[root@hero ~]# ps -ef|grep ssh|grep -v grep     --- 过滤ssh进程信息,并去除最后一行的grep信息
root       7384      1  0 16:18 ?        00:00:00 /usr/sbin/sshd -D
root       7883   7384  0 16:18 ?        00:00:01 sshd: root@pts/0

    1.3 扩展

      1.3.1 常见的正则表达式

常见的正则表达式
^ 锚定行的开始 如:'^grep'匹配所有以grep开头的行。
$ 锚定行的结束 如:'grep$'匹配所有以grep结尾的行。
. 匹配一个非换行符的字符如:'gr.p'匹配gr后接一个任意字符,然后是p。
* 匹配零个或多个先前字符如:'*grep'匹配所有一个或多个空格后紧跟grep的行
[] 匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。
[^] 匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。
\< 锚定单词的开始,如:'\<grep'匹配包含以grep开头的单词的行。
\> 锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。
\w 匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。

\W文章来源地址https://www.toymoban.com/news/detail-528411.html

\w的反置形式,匹配一个或多个非单词字符,如点号句号等。
\b 匹配一个单词的边界。例如,“er\b”可以匹配“never”中的“er”,但不能匹配“verb”中的“er”;“\b1_”可以匹配“1_23”中的“1_”,但不能匹配“21_3”中的“1_”。
\B 匹配非单词边界。“er\B”能匹配“verb”中的“er”,但不能匹配“never”中的“er”。

      1.3.2 用于egrep 和 grep -e 的元字符扩展集

用于egrep 和 grep -e的元字符扩展集
+ 匹配前面的子表达式一次或多次(大于等于1次)。例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等价于{1,}。
? 匹配前面的子表达式零次或一次。例如,“do(es)?”可以匹配“do”或“does”。?等价于{0,1}。
| 将两个匹配条件进行逻辑“或”(Or)运算。例如正则表达式(him|her) 匹配"it belongs to him"和"it belongs to her"
() 分组符号,如:love(able|rs)ov+匹配loveable或lovers,匹配一个或多个ov。
{n} n是一个非负整数。匹配确定的n次。例如,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的两个o。
{n,} n是一个非负整数。至少匹配n次。例如,“o{2,}”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有o。“o{1,}”等价于“o+”。“o{0,}”则等价于“o*”。
{n,m} m和n均为非负整数,其中n<=m。最少匹配n次且最多匹配m次。例如,“o{1,3}”将匹配“fooooood”中的前三个o为一组,后三个o为一组。“o{0,1}”等价于“o?”。请注意在逗号和两个数之间不能有空格。

到了这里,关于一、linux grep命令详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux命令模糊查询文件或文件夹(包含find命令拓展)

    1、 find 命令 ​path(表示文件或文件夹的绝对路径 ​) -type f (表示查的是文件,-type d 表示查的是文件夹 ​) -name “cron*” (表示查cron开头的所有文件或文件夹) 2、 拓展 :

    2024年02月11日
    浏览(63)
  • 【Linux】ps -ef|grep -v grep|awk ‘{print $2}‘ 命令详解

    第一步:grep -v grep grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。 ps -ef|grep java 就是通过管道的方式,将 ps 命令查询出来的进程信息内容筛选出

    2024年02月14日
    浏览(33)
  • Linux :: 内容过滤指令【3】:grep 指令【详解】:在指定文件中过滤搜索信息、(模糊)查找包含指定字符串的内容!(如:系统故障时,查看操作日志信息等情景)

    前言:本篇是 Linux 基本操作篇章的内容! 笔者使用的环境是基于腾讯云服务器:CentOS 7.6 64bit。 学习集: C++ 入门到入土!!!学习合集 Linux 从命令到网络再到内核!学习合集 注:find 指令常与 grep 指令在面试中被提及,需让你回答异同! 目录索引: 1. 基本语法、功能及使

    2024年02月09日
    浏览(45)
  • Linux grep命令教程:强大的文本搜索工具(附案例详解和注意事项)

    grep (Global Regular Expression Print)命令用来在文件中查找包含或者不包含某个字符串的行,它是强大的文本搜索工具,并可以使用正则表达式进行搜索。当你需要在文件或者多个文件中搜寻特定信息时,grep就显得无比重要啦。 grep命令在几乎所有的Linux发行版中都可以使用。以下是

    2024年01月18日
    浏览(33)
  • Linux 环境中redis查询数据的多种方法,linux 一行命令代替连接 + 查询,不得不看,运维必学

    1、第一种方法:我们可以先登录Linux服务器上,使用redis-cli 命令连接到redis 数据库,使用查询命令 查询我们想要的数据。 2、使用redis --help 查询redis中的参数,使用命令行中所带的 -e 参可以查询我们想要的数据。 2. 1、使用数据库连接命令 + -e + 数据库查询命令。 3、第三种

    2024年02月12日
    浏览(45)
  • 【Linux 服务器运维】定时任务 crontab 详解 | 文末送书

    本文思维导图概述的主要内容: 1.1 什么是 crontab Crontab 是一个在 Unix 和 Linux 操作系统上 用于定时执行任务 的工具。它允许用户创建和管理计划任务,以便在特定的时间间隔或时间点自动运行命令或脚本。Crontab 是 cron table 的缩写, cron 指的是 Unix 系统中的一个后台进程,它

    2024年02月08日
    浏览(62)
  • Linux系统运维:性能监视和分析工具sar命令详解

    目          录 一、sar工具介绍 二、sar工作原理 (一)原理概述 (二)sar数据收集器 三、sar命令语法 四、sar主要功能介绍 (一)功能概述 (二)CPU统计数据 (三)磁盘I/O统计数据 (四)网络统计数据 1、是使用-n DEV选项的sar输出 2、关于网络错误的信息可以用sar -n EDE

    2024年02月21日
    浏览(60)
  • Linux 命令:grep

    文本查找或搜索工具。用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设grep会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则grep会从标准输入设备读取数据。 同样可以配合正则表达式来

    2024年01月20日
    浏览(32)
  • Linux grep命令详细教程

    [本文出自天外归云的博客园] Linux grep命令是一种非常常用的文本搜索工具,它可以在给定的文件中搜索匹配的字符串,并输出匹配的行。grep是全称“global search regular expression print”,可以识别正则表达式,并使用正则表达式进行搜索。 以下是  grep  的所有选项: -a, --text

    2023年04月27日
    浏览(32)
  • Linux:文本搜索命令grep

    相关阅读 Linux https://blog.csdn.net/weixin_45791458/category_12234591.html         grep是类Unix系统中用于搜索并打印文件中符合某种模式(pattern)的行。grep命令的的基本语法如下所示:         grep搜索命名的输入文件,即最后的[FILE...](如果没有文件或者如果单个连字符-(-)作为文件名给

    2024年02月07日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包