Linux教程

Linux 文档流处理三剑客学习第一篇 grep

本文主要是介绍Linux 文档流处理三剑客学习第一篇 grep,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

工作中经常需要碰到Linux的日志或者命令输出,处理输出的文档流信息,作为我个人认为的三剑客之首,grep平时用的最多,但基本也就是全量匹配,或者加个i不区分大小写进行匹配。

趁最近工作有空闲,首相对grep进行一些学习。

参考链接:

https://blog.csdn.net/jinguangliu/article/details/81129426

https://www.cnblogs.com/sidianok/p/12931683.html

 

简介:

grep(global search regular expression(RE) and print out the line)

全面搜索正则表达式并将其打印输出

 

通过grep--help输出可以看到非常多的选项,我还是参考网上的资料,先走一遍流水。

 

[root@www ~]# grep [-acinv] [--color=auto] '搜寻字符串' filename
选项与参数:
-a :将 binary 文件以 text 文件的方式搜寻数据
-c :计算找到 '搜寻字符串' 的次数
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!
--color=auto :可以将找到的关键词部分加上颜色的显示喔!

 

平时用的比较多的是-i 个人感觉比较有用的有-v -n

找到一个比较使用的参数 -A3 -B2

-A, --after-context=NUM   打印以文本结尾的NUM 行

-B, --before-context=NUM  打印以文本起始的NUM 行

-C, --context=NUM         打印输出文本NUM 行[前后都打印]

通过这两个参数可以打印出,匹配行信息的后几行或者前几行信息.

 

grep 可以直接与正则表达式配合使用,使用规则与Python语言中的正则使用差不多。规则需要用单引号包起来,特殊符号匹配需要用转移符号\进行转义

需要转移的包含但不仅限与:{,},-,\,

 

具体规则不在重复,提示自己需要在规则中前后添加单引号,

 

对于|[或]和+[1个或者]与?等扩展正则使用字符,

可以用过grep -E使用,或者在grep是用的时候,在这个符号之前+上转移字符

 

通过本人测试,其实通过grep -E官方的解释为:-E, --extended-regexp     PATTERN 是一个可扩展的正则表达式(缩写为 ERE)

其实通过-E的选项使用正则规则更加合适,你可以在任何情况下都加上,这样grep能认识所有的正则里面的符号,使用的时候不需要在正则符号比较{-等符号之前加上\的转义符

 

如果需要将正则中的特殊符号当做普通字符匹配,就可以通过转移符\

(base) [sidian@VM_0_17_centos ~]$ echo '{}' |grep '{}'
{}
(base) [sidian@VM_0_17_centos ~]$ echo '{}' |grep -E '\{\}'
{}

  

上面演示了匹配{}的写法

最后我对-E的使用,我认为如果用到了正则符号就上-E参数,如果没用到就不用E了

 

这篇关于Linux 文档流处理三剑客学习第一篇 grep的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!