以下内容首发自公众号“小汪Waud”。
本期介绍在Linux环境下的正则表达式及grep命令。
正则表达式(Regular Expression)是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符及这些字符的特定组合,组成一个“规则字符串”,这个字符串用来表达对字符串的一种过滤逻辑。
正则表达式基本上是一种表示法,只要程序支持这种表示法,该程序就可以用来作为正则表达式的字符串处理之用。如vi、grep、awk、sed等程序支持正则表达式,所以可以使用正则表达式的特殊字符来进行字符串的处理。但例如cp、ls等命令并不支持正则表达式,所以只能用自己的通配符。
正则表达式依照 不同的严谨度 分为:基础正则表达式和扩展正则表达式。
注意!
grep是一种强大的文本搜索工具,可以使用 正则表达式匹配模式 查找文件里符合条件的字符串,并打印出来。
有点类似于WORD里的查找功能。
grep支持三种正则表达式语法:Basic、Extended和perl兼容。 如果没有提供正则表达式类型,grep将搜索模式解释为基本的正则表达式。要将模式解释为扩展正则表达式,请使用-E。
查看grep的帮助文档,如下
基本用法
grep [OPTION]… PATTERN [FILE]…
高级用法
grep [-A] [-B] [–color=auto] ”查找字符” [模式] [文件]
常用参数
首先通过cat命令查看samples.txt的内容,如下图
如果想检索以K为行首的行,通过以下命令即可得到
如果想检索以Z为行尾的行,通过以下命令即可得到
如果想检索三个字符其中前面为K,后面为D中间字符,为任意字符,通过以下命令即可得到
参考资料
https://www.runoob.com/linux/linux-comm-grep.html
https://www.bilibili.com/video/BV1Yy4y117SX?p=12
正则表达式:grep “^[[:space :]]*$” 表示什么?
常用参数:
-v排除匹配内容,
-e支持扩展的正则表达式,
-i忽略大小写,
-o输出匹配的内容(只是一块,不是行),
–color=auto 匹配内容显示颜色,
-n 在行首显示行号。
特殊字符注意事项:
^(尖括号)word :表示搜索以word开头的内容。
word$ 表示搜索以word结尾的内容。
^$表示的是空行,不是空格。
. 代表且只能代表任意一个字符。非正则表达式其他功能(当前目录,加载文件)
\ 转义字符,让有着特殊身份意义的字符,脱掉马甲,还原原型。例如\.只表示原始小数点意义。
*表示重复0个或多个前面的一个字符。不代表所有。
.* 表示匹配所有的字符。^.*表示以任意字符开头。
[任意字符如abc] 匹配字符集内任意一个字符[a-z]。
[^abc] ^在中括号里面是非的意思,不包含之意。意思就是不包含a或b或c的行。
{n,m} 表示重复n到m次前一个字符。{n}至少n次,多了不限。{n}N次,{,m}至多m次,少了不限。
注:使用grep或sed要对{}转义。即\{\}.egrep就不需要转义了。
如果有什么不懂的话可以去看看《Linux就该这么学》这本书,非常适合新手学习Linux。
grep命令详解
逐个进行解析如下:
^:表示字符串开始。
[[:space :]] :表示匹配空格。
*:表任意字符。
[[:space :]]* :表示任意个空格。
$:表示字符串结束。
综上所示,就是匹配N个空格,所以就是空白行
linux grep命令:
<p fc05=”” fc11=”” nbw-blog=”” ztag=”” js-fs2”=””>
1、作用
Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression print,表示全局正则表达式版本,它的使用权限是所有用户。
2、格式
grep [options]
3、主要参数
[options]主要参数:
-c:只输出匹配行的计数。
-I:不区分大 小写(只适用于单字符)。
-h:查询多文件时不显示文件名。
-l:查询多文件时只输出包含匹配字符的文件名。
-n:显示匹配行及 行号。
-s:不显示不存在或无匹配文本的错误信息。
-v:显示不包含匹配文本的所有行。
pattern正则表达式主要参数:
\: 忽略正则表达式中特殊字符的原有含义。
^:匹配正则表达式的开始行。
$: 匹配正则表达式的结束行。
\<:从匹配正则表达 式的行开始。
\>:到匹配正则表达式的行结束。
[ ]:单个字符,如[A]即A符合要求 。
[ – ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
。:所有的单个字符。
* :有字符,长度可以为0。
4.grep命令使用简单实例
$ grep ‘test’ d*
显示所有以d开头的文件中包含 test的行。
$ grep ‘test’ aa bb cc
显示在aa,bb,cc文件中匹配test的行。
$ grep ‘[a-z]\{5\}’ aa
显示所有包含每个字符串至少有5个连续小写字符的字符串的行。
$ grep ‘w\(es\)t.*\1′ aa
扩展资料:
egrep 命令,搜索文件获得模式。egrep 命令会在输入文件(缺省值为标准输入)中搜索与Pattern 参数指定的模式相匹配的行。这些模式是完整的正则表达式就像在 ed 命令中的那样(除了 \ (反斜杠)和 \\ (双反斜杠))。下列规则也应用于 egrep 命令:
一个正则表达式后面带一个 + (加号)会匹配一个或多个的正则表达式,一个正则表达式后面带一个 ? (问号)会匹配零个或一个该正则表达式,由 | (竖线)或者换行符隔开的多个正则表达式会匹配与任何一个正则表达式所匹配的字符串。
一个正则表达式可以被包括在“()”(括弧)中进行分组,换行符将不会被正则表达式匹配,运算符的优先顺序是 [, ], *, ?, +, 合并, | 和换行符。
注意: egrep 命令与 grep 命令带 -E 标志是一样的,除了错误消息和使用消息不同以及 -s 标志的功能不同之外,egrep 命令会显示包含该匹配行的文件,如果指定了多于一个 File 参数的话。
参考资料:
百度百科—GREP
参考资料:
百度百科—linux命令
以上就是关于Linux||正则表达式及grep命令全部的内容,如果了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!