grep命令用法解析

60 篇文章 58 订阅
订阅专栏

作为linux中最为常用的三大文本(awk,sed,grep)处理工具之一,掌握好其用法是很有必要的。

首先谈一下grep命令的常用格式为:grep  [选项]  ”模式“  [文件]

grep家族总共有三个:grep,egrep,fgrep。

常用选项:

  -E :开启扩展(Extend)的正则表达式。

  -i :忽略大小写(ignore case)。

  -v :反过来(invert),只打印没有匹配的,而匹配的反而不打印。

  -n :显示行号

  -w :被匹配的文本只能是单词,而不能是单词中的某一部分,如文本中有liker,而我搜寻的只是like,就可以使用-w选项来避免匹配liker

  -c :显示总共有多少行被匹配到了,而不是显示被匹配到的内容,注意如果同时使用-cv选项是显示有多少行没有被匹配到。

  -o :只显示被模式匹配到的字符串。

  --color :将匹配到的内容以颜色高亮显示。

  -A  n:显示匹配到的字符串所在的行及其后n行,after

  -B  n:显示匹配到的字符串所在的行及其前n行,before

  -C  n:显示匹配到的字符串所在的行及其前后各n行,context

两种格式均可:

grep "root" /etc/passwd

cat /etc/password | grep "root"

 

也可以叠加使用:

将/etc/passwd,将没有出现 root 和nologin的行取出来

grep -v root /etc/passwd | grep -v nologin

 

用 dmesg 列出核心信息,再以 grep 找出内含 eth 那行,要将捉到的关键字显色,且加上行号来表示:

[root@www ~]# dmesg | grep -n --color=auto 'eth'
247:eth0: RealTek RTL8139 at 0xee846000, 00:90:cc:a6:34:84, IRQ 10
248:eth0: Identified 8139 chip type 'RTL-8139C'
294:eth0: link up, 100Mbps, full-duplex, lpa 0xC5E1
305:eth0: no IPv6 routers present
# 你会发现除了 eth 会有特殊颜色来表示之外,最前面还有行号喔!

在关键字的显示方面,grep 可以使用 --color=auto 来将关键字部分使用颜色显示。 这可是个很不错的功能啊!但是如果每次使用 grep 都得要自行加上 --color=auto 又显的很麻烦~ 此时那个好用的 alias 就得来处理一下啦!你可以在 ~/.bashrc 内加上这行:『alias grep='grep --color=auto'』再以『 source ~/.bashrc 』来立即生效即可喔! 这样每次运行 grep 他都会自动帮你加上颜色显示啦

根据文件内容递归查找目录:

# grep ‘energywise’ *           #在当前目录搜索带'energywise'行的文件

# grep -r ‘energywise’ *        #在当前目录及其子目录下搜索'energywise'行的文件
# grep -l -r ‘energywise’ *     #在当前目录及其子目录下搜索'energywise'行的文件,但是不显示匹配的行,只显示匹配的文件

这几个命令很使用,是查找文件的利器。

模式部分:

  1、直接输入要匹配的字符串,这个可以用fgrep(fast grep)代替来提高查找速度,比如我要匹配一下hello.c文件中printf的个数:grep  -c  "printf"  hello.c

  2、使用基本正则表达式,下面谈关于基本正则表达式的使用:

    匹配字符:

      . :任意一个字符。

      [abc] :表示匹配一个字符,这个字符必须是abc中的一个。

      [a-zA-Z] :表示匹配一个字符,这个字符必须是a-z或A-Z这52个字母中的一个。

      [^123] :匹配一个字符,这个字符是除了1、2、3以外的所有字符。

      对于一些常用的字符集,系统做了定义:

      [A-Za-z] 等价于 [[:alpha:]]

      [0-9] 等价于 [[:digit:]]

      [A-Za-z0-9] 等价于 [[:alnum:]]

      tab,space 等空白字符 [[:space:]]

      [A-Z] 等价于 [[:upper:]]

      [a-z] 等价于 [[:lower:]]

      标点符号 [[:punct:]]

匹配次数:

      \{m,n\} :匹配其前面出现的字符至少m次,至多n次。
      \? :匹配其前面出现的内容0次或1次,等价于\{0,1\}。
      * :匹配其前面出现的内容任意次,等价于\{0,\},所以 ".*" 表述任意字符任意次,即无论什么内容全部匹配。

位置锚定:

      ^ :锚定行首

      $ :锚定行尾。

                      技巧:"^$"用于匹配空白行。

      \b或\<:锚定单词的词首。如"\blike"不会匹配alike,但是会匹配liker

      \b或\>:锚定单词的词尾。如"\blike\b"不会匹配alike和liker,只会匹配like

      \B :与\b作用相反。

分组及引用:

      \(string\) :将string作为一个整体方便后面引用

        \1 :引用第1个左括号及其对应的右括号所匹配的内容。

        \2 :引用第2个左括号及其对应的右括号所匹配的内容。

        \n :引用第n个左括号及其对应的右括号所匹配的内容。

3、扩展的(Extend)正则表达式(注意要使用扩展的正则表达式要加-E选项,或者直接使用egrep):

    匹配字符:这部分和基本正则表达式一样

 

    匹配次数

      * :和基本正则表达式一样

      ? :基本正则表达式是\?,二这里没有\。

      {m,n} :相比基本正则表达式也是没有了\。

      + :匹配其前面的字符至少一次,相当于{1,}。

 

    位置锚定:和基本正则表达式一样。

 

    分组及引用

      (string) :相比基本正则表达式也是没有了\。

        \1 :引用部分和基本正则表达式一样。

        \n :引用部分和基本正则表达式一样。

 

    或者

      a|b :匹配a或b,注意a是指 | 的左边的整体,b也同理。比如 C|cat 表示的是 C或cat,而不是Cat或cat,如果要表示Cat或cat,则应该写为 (C|c)at 。记住(string)除了用于引用还用于分组。

     

注1:默认情况下,正则表达式的匹配工作在贪婪模式下,也就是说它会尽可能长地去匹配,比如某一行有字符串 abacb,如果搜索内容为 "a.*b" 那么会直接匹配 abacb这个串,而不会只匹配ab或acb。

注2:所有的正则字符,如 [ 、* 、( 等,若要搜索 * ,而不是想把 * 解释为重复先前字符任意次,可以使用 \* 来转义。

任意一个字节 . 与重复字节 *


这两个符号在正则表达式的意义如下:

. (小数点):代表『一定有一个任意字节』的意思;
* (星号):代表『重复前一个字符, 0 到无穷多次』的意思,为组合形态

假设我需要找出 g??d 的字串,亦即共有四个字节, 起头是 g 而结束是 d ,我可以这样做:

[root@www ~]# grep -n 'g..d' regular_express.txt
1:"Open Source" is a good mechanism to develop programs.
9:Oh! The soup taste good.
16:The world <Happy> is the same with "glad".

因为强调 g 与 d 之间一定要存在两个字节,因此,第 13 行的 god 与第 14 行的 gd 就不会被列出来啦!

 

如果我想要列出有 oo, ooo, oooo 等等的数据, 也就是说,至少要有两个(含) o 以上,该如何是好?

因为 * 代表的是『重复 0 个或多个前面的 RE 字符』的意义, 因此,『o*』代表的是:『拥有空字节或一个 o 以上的字节』,因此,『 grep -n 'o*' regular_express.txt 』将会把所有的数据都列印出来终端上!

当我们需要『至少两个 o 以上的字串』时,就需要 ooo*

 

如果我想要字串开头与结尾都是 g,但是两个 g 之间仅能存在至少一个 o ,亦即是 gog, goog, gooog.... 等等,那该如何?

答:grep -n 'goo*g' regular_express.txt

如果我想要找出 g 开头与 g 结尾的行,当中的字符可有可无

答: grep -n 'g.*g' regular_express.txt

这个 .* 的 RE 表示任意字符是很常见的.

下面用一个练习来结束本次grep的学习:

在网络配置文件 /etc/sysconfig/network-scripts/ifcfg-ens33 中检索出所有的 IP

1、检索出 0-255的范围

2、由0-255的数字组合成IP

3、简化

Linux grep 命令用法详解
01-09
Linux grep 命令 Linux grep 命令用于查找文件里符合条件的字符串。 grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来...
grep常用方法
识途老码
09-21 5万+
grep匹配多个关键字 1、 grep ‘字符串’ 2、 反向匹配grep -v ‘字符串’ 3、 grep -E 同时匹配多个关键字–或关系 4、 同时匹配多个关键字–与关系 5、显示前几行和后几行 通配符(匹配文件名) 常用正则表达式(匹配文件内容) grep常用语法...
grep -e 和 grep -E 的区别是什么?
菜鸟先飞
02-23 1万+
grep -E 则适用于复杂的正则表达式,可以使用多项选择、重复和子表达式来匹配文本。grep -e 适用于简单的正则表达式,比如搜索一个字符串中是否包含特定的关键词。
grep -E匹配字符串
最新发布
weixin_53389944的博客
09-20 182
匹配cmdb字符串,字符串的开头或者结尾是空格字符,你可以使用以下grep
grep笔记231128 grep的 -e , -E , -F , -G , -P 有什么区别
kfepiza的博客
11-28 6642
是一个常用的命令行工具,用于在文本文件中搜索匹配指定模式的行。、、、 和 是 的选项,它们具有不同的功能和用途。在grep命令中,、、、和选项之间的区别如下:选项:这是grep命令的常规选项,用于指定要搜索的模式。当使用选项时,grep会在文本中搜索与指定模式匹配的行。选项:这个选项允许使用扩展正则表达式(Extended Regular Expression)。它提供了更多的正则表达式功能和灵活性,例如支持?、+、{}、()和|等元字符。使用选项可以编写更复杂的正则表达式模式来进行搜索。选项:这个选项
grep用法
好好睡觉
11-29 1万+
grep命令用法 grep中的正则
grep命令常用选项
ZHX2285的博客
04-08 2334
也可以对命令gerp -E设置命令的别名,即vi /etc/bashrc打开文件bashrc,然后进入插入模式,使用alias grep='grep -E'(对命令grep -E设置别名grep)如果当要筛选的文件内容中有4个扩展正则表达式的话,就在扩展正则表达式的前面加上转义字符即\(左斜杠)使得扩展正则表达式成为普通的字符。命令egrep就相当于是grep -E命令,在使用扩展正则表达式时,使用egrep可以省略掉转移字符的书写。如上图所示,是对grep 命令加上-E后的一些正则表达式的演示。
GREP命令常见用法
qq_40907977的博客
07-24 2万+
常用参数: -a #不要忽略二进制数据 -A #除了显示符合范本样式的那一行之外,并显示该行之后的内容 -b #在显示符合范本样式的那一行之外,并显示该行之前的内容 -B #除了显示符合样式的那一行之外,并显示该行之前的内容 -c #计算符合范本样式的列数 -C #除了显示符合范本样式的那一列之外,并显示该列之前后的内容 -d #当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作 -e #指定字符串作为查找文件内容的范本样式 -E #将范本样式为延伸的普
Linux常用命令grep命令用法详解
01-09
grep命令在Linux系统中是一个非常重要的工具,它用于在文件或标准输入中搜索特定模式,帮助用户快速查找和提取有用信息。通过grep,你可以根据不同的选项进行精确匹配、忽略大小写、匹配整词等操作。 1. **基本使用...
Linux系统 grep命令用法详解.doc
12-21
通过理解并掌握`grep`命令用法,可以大大提高Linux系统中的数据处理效率。下面将详细介绍`grep`命令的基本语法、常用选项以及实际应用案例。 `grep`命令的基本语法如下: ``` grep [选项...] 参数... ``` 其中,`...
linux中使用grep命令详解
01-10
Linux grep命令 Linux grep命令用于查找文件里符合条件的字符串;也可以用于查找内容包含指定的范本样式的文件。它能使用正则表达式搜索,用于在文件中搜索指定的字符串模式,列出含有匹配模式子符串的文件名,并...
关于grep命令的or,and,not操作的例子
热门推荐
Mind In Chaos
10-24 8万+
在Linux的grep命令中如何使用OR,AND,NOT操作符呢?        其实,在grep命令中,有OR和NOT操作符的等价选项,但是并没有grep AND这种操作符。不过呢,可以使用patterns来模拟AND操作的。下面会举一些例子来说明在Linux的grep命令中如何使用OR,AND,NOT。        在下面的例子中,会用到这个employee.txt文件,如下: $ c
一、linux grep命令详解
m0_53741670的博客
03-13 1万+
grep的参数及用法举例;grep搭配管道使用;常见的正则表达式;扩展了用于egrepgrep -e 的元字符扩展集
Linux运维常用grep命令使用
小楼一夜听春雨
05-18 1666
grep 命令是 Linux 运维中非常常见的文本搜索工具,常用的使用方法如下
grep 两个字符串_grep中的正则表达式
weixin_39622123的博客
11-21 576
grep是Linux中用于处理文件的工具之一。grep搜索输入文件,查找与正则表达式匹配的行,并将每个匹配的行标准输出。正则表达式是匹配一组字符串的模式。模式由操作符、构造文字字符和具有特殊意义的元字符组成。grep支持三种正则表达式语法:Basic、Extended和perl兼容。如果没有提供正则表达式类型,grep将搜索模式解释为基本的正则表达式。要将模式解释为扩展的正则表达式,请使用-E。文...
grep命令详解
抽象的螺旋
08-19 971
查询多个关键字 查询包含多个关键字(或操作) // 主要一定要使用单引号 grep -E '123|abc' filename // 找出文件(filename)中包含123或者包含abc的行 egrep '123|abc' filename // 用egrep同样可以实现 awk '/123|abc/' filename // awk 的实现方式 示例: grep -E 'upload|download' file.log 查询同时包含多个关键字的命令(与操作) grep pattern
Linux 系统 grep 命令超详细讲解
兴趣是最好的老师,勤能补拙
06-27 4万+
grep 命令是一项非常有用的工具。grep(全称:Global Regular Expression Print)命令用于根据给定的正则表达式搜索文本,并将匹配的行打印出来。
grep高级用法shell
weixin_68183733的博客
09-29 1389
在shell场景中grep的高级用法
gitbashModuleNotFoundError: No module named 'cv2.cv2'
08-23
在Git Bash中遇到`ModuleNotFoundError: No module named 'cv2.cv2'`错误通常是由于Python环境配置的问题。这个错误提示表示找不到名为'cv2.cv2'的模块,而`cv2`通常是指OpenCV(Computer Vision Library),这是一个用于图像处理和计算机视觉任务的库。 1. 首先,确认你在Git Bash中使用的Python版本是否已经安装了OpenCV。你可以尝试运行`pip list | grep opencv`来查看是否有opencv的相关包。 2. 如果没有安装,你需要安装OpenCV。在Git Bash中,可以使用`pip install opencv-python`或`pip install opencv-python-headless`(如果需要非GUI版本)来安装。 3. 如果你已经在其他Python环境中安装了OpenCV,确保你在Git Bash中激活了正确的虚拟环境,该环境包含了OpenCV。如果没有,创建一个新的虚拟环境并安装cv2。 4. 检查系统PATH变量是否正确设置,使得Git Bash能找到Python解释器和已安装的OpenCV库。
写文章

热门文章

  • linux下.tar.gz和.gz文件解压详解 483529
  • windows环境下tensorflow安装过程详解 340731
  • MATLAB利用散点进行函数曲线拟合 271065
  • Excel的两个表格按照某一列数据进行匹配 190750
  • Python中字典(dict)的用法详解 157343

分类专栏

  • shell 6篇
  • mac 1篇
  • 人生 4篇
  • 力扣 5篇
  • 剑指offer 62篇
  • 爬虫 3篇
  • 数据结构 1篇
  • 机器学习 11篇
  • C++ 10篇
  • 特征点检测 5篇
  • HTML+CSS+JavaScript 5篇
  • 立体视觉 13篇
  • C++ 87篇
  • OpenCV 26篇
  • 特征点检测 5篇
  • Linux 44篇
  • HTML 1篇
  • CSS3 6篇
  • 学习 91篇
  • Matlab 11篇
  • GPU 2篇
  • c语言 1篇
  • 神经网络 4篇
  • 机器学习 25篇
  • python 60篇
  • NLP 9篇

最新评论

  • Excel的两个表格按照某一列数据进行匹配

    qq_42275469: 谢谢

  • windows环境下tensorflow安装过程详解

    上官发财640: https://blog.csdn.net/Rhao999/article/details/103944386?ops_request_misc=%257B%2522request%255Fid%2522%253A%252240AB1794-3E00-47C4-9532-F2C2938D667E%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=40AB1794-3E00-47C4-9532-F2C2938D667E&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-103944386-null-null.142^v100^control&utm_term=ERROR%3A%20tensorflow-1.1.0-cp35-cp35m-win_amd64.whl%20is%20not%20a%20supported%20wheel%20on%20this%20platform.&spm=1018.2226.3001.4187

  • OpenMP的配置及简单使用

    dongrunyu: -fopenmp

  • Excel的两个表格按照某一列数据进行匹配

    happy egg: 但是这样做出来结果基本都是错的

  • windows环境下tensorflow安装过程详解

    2201_75434140: Could not find a version that satisfies the requirement tensorflow (from versions: ) No matching distribution found for tensorflow 请问显示这个怎么办

最新文章

  • 依存句法分析 -- tag和dep释义
  • 关于Spacy
  • Linux下安装Python3
2023年2篇
2022年3篇
2021年31篇
2020年73篇
2019年76篇
2018年37篇
2017年64篇
2016年61篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

玻璃钢生产厂家云南景区玻璃钢雕塑订做价格服务 好的玻璃钢花盆雕塑青海玻璃钢卡通雕塑分类绵阳玻璃钢雕塑定制三明玻璃钢广场雕塑广州水果玻璃钢雕塑定做价格商场夏季美陈网上饶玻璃钢人物雕塑玻璃钢人物不锈钢卡通雕塑定做兰州玻璃钢花盆加工玻璃钢动物雕塑代理价格鹤壁玻璃钢雕塑雕刻厂家电话佳木斯市玻璃钢雕塑卡通猫玻璃钢雕塑造型铜玻璃钢雕塑报价玻璃钢雕塑出现裂纹玻璃钢雕塑虎年蓬江玻璃钢雕塑厂家包头玻璃钢马雕塑安阳玻璃钢彩绘雕塑设计宁德玻璃钢门头雕塑有诚信的玻璃钢雕塑造型玻璃钢雕塑漆多少钱一平方皮卡丘模型玻璃钢雕塑摆件定制弥勒市玻璃钢雕塑设计报价玻璃钢雕塑制作厂家天水抽象人物玻璃钢雕塑哪家好玻璃钢雕塑代加工厂加盟商场橱窗美陈细分报价做玻璃钢雕塑的公司香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化