9.1-9.3 grep工具

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了9.1-9.3 grep工具相关的知识,希望对你有一定的参考价值。

grep工具

grep是什么

      grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。

      grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到屏幕,不影响原文件内容。

选项和语法

语法

语法: grep  [-cinvABC]  'word'  filename

#如grep -c '12345' 1.txt    匹配1.txt文件里符合有12345字符的

选项

-c :只输出匹配行的计数

-i :忽略大小写(匹配的条件字符忽略大小写)

-n :在输出符合要求的行的同时连同行号一起输出(显示行号)

-v :打印不符合要求的行(取反)

-A :后跟一个数字(有无空格都可以),例如 –A2则表示打印符合要求的行以及下面两行

-B :后跟一个数字,例如 –B2 则表示打印符合要求的行以及上面两行

-C :后跟一个数字,例如 –C2 则表示打印符合要求的行以及上下各两行

-r :  会把目录下面所有的文件全部遍历(加h选项,遍历的时候不会显示文件名,只显示匹配到的字符)

-h:遍历文件时不显示文件名

-l:查询多文件时只输出包含匹配字符的文件名

-s:不显示不存在或无匹配文本的错误信息

egrep

egrep=grep -E 作用是需要转义但是不输入转义符的时候用可以起到转义特殊符号的作用

如:egrep ‘(aaa|bbb)’1.txt

这个例子的意思是匹配1.txt里的aaa或者bbb,括号为特殊符号需要转义,用egrep也可以达到转义的目的,如图:

技术分享图片

特殊符号的含义

\: 忽略正则表达式中特殊字符的原有含义

^:匹配正则表达式的开始行

^放在中括号前面是可以匹配以括号内字符开头的行(图为以字母开头的行)

技术分享图片

可以把^放到中括号里面,会匹配到除了括号内字符之外的字符(图中为除了字母之外的字符)

技术分享图片

$: 匹配正则表达式的结束行

技术分享图片

中括号内^&表示开头到结尾,就会匹配所有行,不加中括号会匹配空行。

技术分享图片

技术分享图片

在目录下遍历文件

在etc下遍历以txt为结尾内容包含root的文件:

grep --include "*.txt" -r 'root' /etc/

技术分享图片

扩展:

把一个目录下,过滤所有*.php文档中含有eval的行
grep -r --include="*.php" 'eval' /data/


\<:从匹配正则表达 式的行开始

\>:到匹配正则表达式的行结束

[ ]:单个字符,如[A]即A符合要求 ,或者[aN]包含a或者N的行。(不加括号就是以字符串来匹配)

[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 ,还有[a-Z]表示所有字母,或者[0-9]可以匹配到所有数字字符的行。

. :任意一个字符

* :有字符,长度可以为0


以上是关于9.1-9.3 grep工具的主要内容,如果未能解决你的问题,请参考以下文章

7.3 9.1-9.3

9.1 第九章 字符集

shell脚本--grep工具

Linux文本处理工具三剑客之grep

grep文本查看工具及正则表达式

shell脚本---grepawksed工具