linux shell基础正则表达式与grep命令(编辑中)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux shell基础正则表达式与grep命令(编辑中)相关的知识,希望对你有一定的参考价值。

一、正则表达式
之前学习find命令时,就已经接触过一些简单的正则,那么我们现在来学习一些复杂的正则。首先,我们还是来复习什么是正则表达式,看这个教程先,一定要多看几遍,至少知道正则大概长什么样子。(转载至https://deerchao.net/tutorials/regex/regex.htm )正则就是有规律的一串字符串,用来描述一个特定的内容,正则适合用来处理字符串,不太适合处理数学逻辑。学好正则对编写shell脚本有很大的好处,所有的shell脚本大部分都涉及到正则表达式。各种编程工具中也需要使用正则。

用grep sed awk去处理字符串
能不能写好shell脚本php
ngix配置文件中也有正则
正则核心符号
。一个任意字符

  • 个*
    ? 零个或1个
  • 一个或多个

二、grep命令
grep命令用于过滤文件中的字符,(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。系统本身通过/etc/profile.d目录下的colorgrep.sh文件做了别名==grep --color,能够方便的显示找到的行。

用法: grep [选项]... PATTERN [FILE]...
grep -cniv ‘关键字(正则)’ 文件路径
选项
-i 不区分大小写,默认情况下grep不区分关键字大小写
-c 行数
-n 显示关键词所在行号
-v取反(使用较多)
-r 遍历所有层级子目录
-A后面跟数字,过滤出符合要求的行以及下面的n行
-B后面跟数字,过滤符合要求的行以及上面的n行
-C后面跟数字,过滤符合要求的行以及上下各n行

grep/egrep示例
grep -n ‘root’ /etc/passwd
grep -nv

扩展正则 grep -E ==sed -r ==awk

反复练习,掌握正则表达式
首先做个准备工作,把/etc/passwd文档拷贝到其他路径下,如/tmp下做试验

示例

1、过滤出关键字root所在的行并显示行号。

grep -n ‘root‘ /etc/passwd

技术分享图片

可以看到有颜色标识关键字。

2、统计某一关键字出现的行数

grep -c ‘nologin‘ passwd

技术分享图片

下面那个15就是说nologin这个关键字出现了15次

3、搜索某一关键字出现的行,然后把没有出现关键字的行过滤出来

grep -vn ‘nologin‘ passwd

技术分享图片

4、搜索整个文件夹,在文件内容中招root。(注意与find命令找到的东西的区别)

grep -r ‘root‘ /etc

技术分享图片

紫色是文件的路径,搜索出来的东西很多,grep把/etc下所有包含root的文件中的root字所在的行和所在的文件信息都列了出来。

以上是关于linux shell基础正则表达式与grep命令(编辑中)的主要内容,如果未能解决你的问题,请参考以下文章

linux基础:shell中的正则表达式用法大全

linux基础:shell中的正则表达式用法大全

Linux学习8之Shell编程--基础正则表达式

Linux Shell编程

Linux基础--grep与正则表达式

linux12shell编程 --> 三剑客之grep命令