×

grep正则表达式

grep正则表达式(grep正则表达式引号)

admin admin 发表于2023-04-09 02:47:07 浏览82 评论0

抢沙发发表评论

本文目录一览:

请简述基础正则表达式grep高级参数的使用

常用参数:

-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。

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

以下内容首发自公众号“小汪Waud”。

本期介绍在Linux环境下的正则表达式及grep命令。

正则表达式(Regular Expression)是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符及这些字符的特定组合,组成一个“规则字符串”,这个字符串用来表达对字符串的一种过滤逻辑。 -grep正则表达式

正则表达式基本上是一种表示法,只要程序支持这种表示法,该程序就可以用来作为正则表达式的字符串处理之用。如vi、grep、awk、sed等程序支持正则表达式,所以可以使用正则表达式的特殊字符来进行字符串的处理。但例如cp、ls等命令并不支持正则表达式,所以只能用自己的通配符。-grep正则表达式

正则表达式依照 不同的严谨度 分为:基础正则表达式和扩展正则表达式。

注意!

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中间字符,为任意字符,通过以下命令即可得到

参考资料

Linux下Grep命令的详细使用方法?

在linux中grep命令是非常有用的,它和管道(|)配合使用,非常强大,用于搜索文本文件.如果想要在几个文本文件中查找一字符串,可以使用‘grep’命令。‘grep’在文本中搜索指定的字符串。

假设您正在‘/usr/src/linux/Documentation’目录下搜索带字符串‘magic’的文件:

$ grep magic /usr/src/linux/Documentation/*

sysrq.txt:* How do I enable the magic SysRQ key?

sysrq.txt:* How do I use the magic SysRQ key?

其中文件‘sysrp.txt’包含该字符串,讨论的是 SysRQ 的功能。

默认情况下,‘grep’只搜索当前目录。如果此目录下有许多子目录,‘grep’会以如下形式列出:

grep: sound: Is a directory

这可能会使‘grep’的输出难于阅读。这里有两种解决的办法:

明确要求搜索子目录:grep -r

或忽略子目录:grep -d skip

当然,如果预料到有许多输出,您可以通过 管道 将其转到‘less’上阅读:

$ grep magic /usr/src/linux/Documentation/* | less

这样,您就可以更方便地阅读。

有一点要注意,您必需提供一个文件过滤方式(搜索全部文件的话用 *)。如果您忘了,‘grep’会一直等着,直到该程序被中断。如果您遇到了这样的情况,按 ,然后再试。

下面是一些有意思的命令行参数:

grep -i pattern files :不区分大小写地搜索。默认情况区分大小写,

grep -l pattern files :只列出匹配的文件名,

grep -L pattern files :列出不匹配的文件名,

grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’),

grep -C number pattern files :匹配的上下文分别显示[number]行,

grep pattern1 | pattern2 files :显示匹配 pattern1 或 pattern2 的行,

grep pattern1 files | grep pattern2 :显示既匹配 pattern1 又匹配 pattern2 的行。

这里还有些用于搜索的特殊符号:

\ 分别标注单词的开始与结尾。

例如:

grep man * 会匹配 ‘Batman’、‘manic’、‘man’等,

grep '\grep '\' 只匹配‘man’,而不是‘Batman’或‘manic’等其他的字符串。

'^':指匹配的字符串在行首,

'$':指匹配的字符串在行尾,

如果您不习惯命令行参数,可以试试图形界面的‘grep’,如 reXgrep 。这个软件提供 AND、OR、NOT 等语法,还有漂亮的按钮 :-) 。如果您只是需要更清楚的输出,不妨试试 fungrep 。-grep正则表达式

Linux正则表达式教程:Grep Regex示例

正则表达式是特殊字符,可帮助搜索数据,匹配复杂模式。正则表达式缩写为“regexp”或“regex”。

为了便于理解,让我们逐一学习不同类型的正则表达式。

[TOC]

一些常用的正则表达式命令是tr,sed,vi和grep。下面列出了一些基本的正则表达式。

我们来看一个例子吧。

执行cat示例以查看现有文件的内容

搜索包含字母'a'的内容。

' ^ '匹配字符串的开头。让我们搜索一下STARTS的内容

仅过滤以字符开头的行。将忽略开头不包含字符“a”的行。

让我们看看另一个例子 -

仅选择那些以 $ 结尾的行

这些表达式告诉我们字符串中字符的出现次数。他们是

例:

过滤掉包含字符'p'的所有行

我们想要检查字符'p'是否在字符串中依次出现2次。为此,语法将是:

注意:您需要使用这些正则表达式添加-E。

这些正则表达式包含多个表达式的组合。他们之中有一些是:

例:

搜索所有字符't'

假设我们要过滤字符'a'在字符't'之前的行

我们可以使用命令

大括号扩展的语法是花括号“{}”内的序列或逗号分隔的项目列表。序列中的起始和结束项由两个句点“..”分隔。

一些例子:

在上面的示例中,echo命令使用大括号扩展创建字符串。