美文网首页linux运维
grep及正则表达式

grep及正则表达式

作者: awsome365 | 来源:发表于2018-10-12 17:36 被阅读0次

9.1 正则介绍_grep上
9.2 grep中
9.3 grep下
扩展
把一个目录下,过滤所有*.php文档中含有eval的行:grep -r --include="*.php" 'eval' /data/

正则表达式介绍

正则就是一串有规律的字符串,用来匹配符合的文本。通配符也可以完成类似功能,但正则表达式更加灵活、功能强大。

各种编程语言中都有正则表达式,原理是一样的,只是细微处有差别。现在大多语言都支持正则表达式了。掌握好正则对于编写shell脚本有很大帮助。shell脚本中使用正则表达式主要是grep/egrep、sed、awk三个软件。许多人称这三个工具为三剑客,编写shell脚本必不可少。

grep

grep工具用来过滤指定字符串,把文本中包含指定字符串的行标准输出。用法:grep [-cinvABC] 'word' filename,参数含义:

  • -c 显示符合条件的行数
  • -i 不区分大小写
  • -n 显示行号
  • -v 取反
  • -r 遍历所有子目录
  • -A 后面跟数字,过滤出符合要求的行以及下面n行
  • -B 同上,过滤出符合要求的行以及上面n行
  • -C 同上,同时过滤出符合要求的行以及上下各n行

下面的命令包含了grep上常用到的正则表达:

grep -n 'root' /etc/passwd #显示包含root的行,同时显示行号
grep -nv 'nologin' /etc/passwd #显示不包含nologin的行,同时显示行号
grep '[0-9]'/etc/inittab #显示包含0-9的行
grep -v '[0-9]'/etc/inittab #显示不包含0-9的行
grep -v '^#' /etc/inittab #显示行首不是#的行
grep -v '^#' /etc/inittab|grep -v  '^$' #显示行首不是#的行,同时不是空白行
grep '^[^a-zA-Z]' test.txt #显示行首不是字母的行
grep 'r.o' test.txt #显示包含r.o的行,点表示任一字符
grep 'oo*' test.txt #显示包含o或多个o的行,星号与其前一个字符表示大于等于零个该字符
grep '.*' test.txt #显示包含任何字符的行
grep 'o\{2\}' /etc/passwd #显示包含oo的行,花括号内数字表示前面字符的数量,`\`是脱义字符
egrep 'o{2}' /etc/passwd #同上
egrep 'o+' /etc/passwd #显示包含两个o以上的行,加号表示大于等于1个前面的字符
egrep 'oo?' /etc/passwd #显示包含o或oo的行,问号表示1个或0个前面的字符
egrep 'root|nologin' /etc/passwd #显示包含root或nologin的行,|表示或者
egrep '(oo){2}' /etc/passwd #显示包含oooo的行,圆括号表示一个整体

时间充裕的话推荐看一下《精通正则表达式》,我只看过前三章就觉得受益匪浅。

egrep是grep的加强版。主要增加了对一些正则符号的支持。比如花括号,在使用grep时必须用脱义符号\,或者使用-E参数。建议grep过滤词用双引号扩起,不要单引号。单引号在处理变量时可能造成错误。

相关文章

  • 三剑客_grep

    grep grep 相关参数 grep + 正则表达式(扩展正则)

  • Linux简单学习记录(八)

    正则表达式和Shell脚本 一、正则表达式 1.grep与egrep工具 grep命令的格式grep [-cinv...

  • grep常用命令

    grep:支持基本正则表达式 egrep:支持扩展正则表达式,相当于grep -E fgrep:不支持正则表达式,...

  • Linux||正则表达式及grep命令

    以下内容首发自公众号“小汪Waud”。 本期介绍在Linux环境下的正则表达式及grep命令。 1 正则表达式 正...

  • 命令行学习笔记(搜索和压缩相关)

    grep pattern file -- 使用正则表达式搜索文本 grep -r pattern dir -- 递...

  • Linux 查看日志命令

    grep (global search expression print)全局正则表达式版本 直接grep gre...

  • 使用grep搜索多个字符串

    Grep的多条件搜索模式 grep支持三种正则表达式语法:Basic、Extended和Perl正则表达式。当没有...

  • 九、Linux文本过滤

    文本过滤grep: 语法格式:grep [选项] 基本正则表达式 [文件]常用的grep选项有:-c 只输...

  • 正则表达式

    1.正则表达式特殊符号 2.grep命令与正则表达式 grep [options] 3.字符组匹配 pattern...

  • bash编程-grep

    grep, egrep, fgrep :输出匹配模式的行 grep:支持基本正则表达式元字符(grep -E相当于...

网友评论

    本文标题:grep及正则表达式

    本文链接:https://www.haomeiwen.com/subject/qdbgaftx.html