分享linux下grep的一些高级参数(面儿得够)

grep是一个很常见也很常用的命令,它最重要的功能就是进行字符串数据的对比,然后将符合用户需求的字符串打印出来。

这就是grep的作用,只要是看这篇文章的多少都知道一点,那我抄鸟哥的这句话我就当你懂了。

既然这样那我就再抄一句

需要说明的是grep在数据中查找一个字符串时,是以整行为单位来进行数据的选取的!也就是说,假如一个文件内有10行,其中有两行具有你所查找的字符串,则将那两行显示在屏幕上,其他的就丢弃了。

举个栗子

哦对了,附上原始文件




下面开始介绍grep其他的一些参数,毕竟是给自己做笔记,我要写清楚点(呵呵)

--color=auto 将找到的关键字显色

注:如果觉得每次都加--color=auto很麻烦,可以用alias处理一下(alias的功能是设置命令的别名,以简写命令来提高操作效率)。可以在 ~/.bashrc 内加上这行:alias grep='grep --color=auto',再以 source ~/.bashrc 来立即生效即可


-n 显示行号


-A[n] 为after的意思,除了列出匹配行外,后续的n行也列出来


-B[n] 为befer的意思,除了列出匹配行外,前面的n行也列出来


-v 匹配不包含特定字符的行


[] 查找集合字符,跟正则表达式用法相同

如[12]表示包含1或者2,1[23]就表示12或者13

当然也可以[1-3]


[^] 在[]中使用 和-v意思相同,表示不匹配什么


四不四叼叼哒

但是!

以上匹配都是在行进行查找,只要行中匹配就会展示出来,假如我要匹配行头出现过的,怎么办呢?下面介绍一些制表符的用法【微笑的表情】

^ 表示匹配行开头 注意意义不同于[]中的^

匹配MSG开头的数据

同样的,有行首就有行尾

$ 表示匹配行尾

匹配ERROR结尾的数据

下面介绍俩更牛逼的

. 表示任意字符

啥?没看清?那不是有个. 吗?就是点儿.........

注意,一个点儿表示一个任意字符

牛逼不?

* 重复字符

以上文本数据中,有LH001这样的数据,我们匹配这行时,可以直接匹配,也可以用上面的任意字符匹配,但假设我们的目标数据是LH000000001时,或者0的位数不确定时,以上的方式都不能帮助我们准确的匹配到数据,这时候 * 就派上用场了,我们可以用LH0*1来匹配,任意个0

举个栗子

0有点少,大家迁就下

好了,接下来有请我们最后一个命令

{} 字符范围

解释一下使用场景,假如我们要匹配2~5个0的连续字符,就是说中间有两个0也行,三个0也行,5个0也行,这个时候就要用到 {} 了

为了便于大家理解,我换了一个匹配文本如下:

嗯,这么简单就够我们用了,然后我们用 {} 匹配ER到1中间有2~5个0的数据

哦对了,因为{}在shell中是有特殊意义的,所有我们需要用到转译字符让他失去意义才行

栗子来了

那么

笔记做完了,哈哈哈

如果你不小心看到了这里,点个赞吧

不点我自己点
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 14,183评论 2 33
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,324评论 19 139
  • 基础命令 主要的命令和快捷键 Linux系统命令由三部分组成:cmd + [options]+[operation...
    485b1aca799e阅读 4,776评论 0 0
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,761评论 9 468
  • 招行提额到9万2,又救了光大,也就了我,下定决心不要去为难妈妈,感谢创造丰盛
    张严阅读 1,664评论 0 0