【Linux】grep的高级使用

举报
原来是咔咔 发表于 2022/03/26 23:43:42 2022/03/26
【摘要】 文章目录 序言1. 基础正则表达式练习2. 注意点:注意到了吧?那个 ^ 符号,在字符集合符号(括号[])之内与之外是不同的! 在 [] 内代表“反 向选择”,在 [] 之外则代表定位在行首的意义...

序言

这篇文章会写grep的一些案例,如果你对grep的使用不太了解,那么就跟这文章一点点的实战吧!

1. 基础正则表达式练习

  1. 所需的文件
    wget http://linux.vbird.org/linux_basic/0330regularex/regular_express.txt
    在这里插入图片描述

  2. 搜寻特定字符
    搜寻特定字串很简单吧?假设我们要从刚刚的文件当中取得 the 这个特定字串,最简单的方 式就是这样:
    grep -n ‘the’ filename
    加 -n会显示文件行号,而且还是区分大小写的
    在这里插入图片描述
    不区分大小写的查找,会发现比上边多了几行,那是因为不区分大小写,把所有的行显示出来
    在这里插入图片描述

  3. 利用中括号[]来搜寻字符
    如果我想要搜寻 test 或 taste 这两个单字时,可以发现到,其实她们有共通的 ‘t?st’ 存在~这 个时候,我可以这样来搜寻
    grep -n ‘t[ea]st’ filename
    在这里插入图片描述
    其实 [] 里面不论有几个字符,他都仅代表某“一个”字符, 所以,上面的例子说明 了,我需要的字串是“tast”或“test”两个字串而已! 而如果想要搜寻到有 oo 的字符时,则使 用:
    在这里插入图片描述
    但是,如果我不想要 oo 前面有 g 的话呢?此时,可以利用在集合字符的反向选择 来达成 意思就是说,我需要的是 oo ,但是 oo 前面不能是 g 就是了!仔细比较上面两个表格,你会 发现,第 1,9 行不见了,因为 oo 前面出现了 g 所致!第 2,3 行没有疑问,因为 foo 与 Foo 均 可被接受!但是第 18 行明明有 google 的 goo 啊~别忘记了,因为该行后面出现了 tool 的 too 啊!所以该行也被列出来~ 也就是说, 18 行里面虽然出现了我们所不要的项目 (goo) 但是由于有需要的项目 (too) , 因此,是符合字串搜寻的喔!至于第 19 行,同样的,因为 goooooogle 里面的 oo 前面可能是 o ,例如: go(ooo)oogle ,所以,这一行也是符合需求的
    在这里插入图片描述

  4. 取出oo前边的小写
    在这里插入图片描述

  5. 取出带数字的行
    在这里插入图片描述

  6. 取出以the开头的行
    在这里插入图片描述

  7. 取出以小写字母开头的行
    在这里插入图片描述

  8. 取出开头不想为字母的行
    在这里插入图片描述

2. 注意点:注意到了吧?那个 ^ 符号,在字符集合符号(括号[])之内与之外是不同的! 在 [] 内代表“反 向选择”,在 [] 之外则代表定位在行首的意义!要分清楚喔,写在这里是为了醒目,哈哈

  1. 取出尾行为小数点的
    小数点具有其他意义,所以必须要使用跳脱字符(\)来加 以解除其特殊意义!
    在这里插入图片描述

  2. 取出空白行
    在这里插入图片描述

  3. 需要找出 g??d 的字串
    在这里插入图片描述

  4. 想要找出 g 开头与 g 结尾的字串
    但测试的结果竟然出现这么多行?太诡异了吧?其实一点也不诡异,因为 gg 里面的 g 代 表“空字符或一个以上的 g” 在加上后面的 g ,因此,整个 RE 的内容就是 g, gg, ggg, gggg , 因此,只要该行当中拥有一个以上的 g 就符合所需了!
    那该如何得到我们的 g…g 的需求呢?呵呵!就利用任意一个字符“.”啊! 亦即是:“g.g”的作 法,因为 可以是 0 或多个重复前面的字符,而 . 是任意字符,所以: “.* 就代表零个或多个任 意字符”的意思啦!

在这里插入图片描述
在这里插入图片描述
13. 要找出“任意数字”的行列
在这里插入图片描述
14. 如果在有几行数据时,可以进行反向选择
grep -v name即可
这样就可以显示除了name这一行的所有数据了

3. 案例

  1. 当我们搜寻配置问件时,那是相当痛苦的,因为配置文件里边有很多都是#开头的,但是我们又不需要的,下来就解决这个问题
    在这里插入图片描述
    搜寻出不以#开头的
    在这里插入图片描述
    当文件里边有空格时,去除空格的也是可以的
    在这里插入图片描述

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

原文链接:blog.csdn.net/fangkang7/article/details/100163843

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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