Linux 正则表达式教程:Grep 正则表达式示例
什么是 Linux 正则表达式?
Linux 正则表达式是特殊的字符,它们有助于搜索数据和匹配复杂模式。正则表达式的简写是“regexp”或“regex”。它们被用于许多 Linux 程序,如 grep、bash、rename、sed 等。
正则表达式的类型
为了便于理解,我们逐一学习不同类型的正则表达式。
如果视频无法访问,请点击此处
基本正则表达式
一些常用的正则表达式命令包括 tr、sed、vi 和 grep。下面列出了一些基本正则表达式。
符号 | 描述 |
---|---|
. | 替换任意字符 |
^ | 匹配字符串的开头 |
$ | 匹配字符串的结尾 |
* | 匹配前一个字符零次或多次 |
\ | 表示特殊字符 |
() | 对正则表达式进行分组 |
? | 匹配恰好一个字符 |
让我们看一个例子。
执行 cat sample 查看现有文件的内容
搜索包含字母“a”的内容。
“^”匹配字符串的开头。我们来搜索以 a 开头的内容。
只过滤以字符开头的行。忽略不以字符“a”开头的行。
让我们来看另一个例子 –
使用 $ 只选择以 t 结尾的行
区间正则表达式
这些表达式告诉我们字符在字符串中出现的次数。它们是:
表达式 | 描述 |
---|---|
{n} | 精确匹配前一个字符出现“n”次 |
{n,m} | 匹配前一个字符出现“n”次,但不能超过 m 次 |
{n, } | 仅当前一个字符出现“n”次或更多次时才匹配 |
示例
过滤掉所有包含字符“p”的行
我们想检查字符“p”在一个字符串中连续出现正好 2 次。为此,语法是
cat sample | grep -E p\{2}
注意:你需要为这些正则表达式添加 -E 选项。
扩展正则表达式
这些正则表达式包含一个以上的表达式组合。其中一些是:
表达式 | 描述 |
---|---|
\+ | 匹配前一个字符一次或多次 |
\? | 匹配前一个字符零次或一次 |
示例
搜索所有字符“t”
假设我们想过滤掉字符“a”前面是字符“t”的行
我们可以使用类似这样的命令
cat sample|grep "a\+t"
花括号展开
花括号展开的语法是在花括号“{}”内使用序列或逗号分隔的列表。序列的开始和结束项之间用两个句点“..”分隔。
一些例子
在上面的例子中,echo 命令使用花括号展开来创建字符串。
摘要
- 正则表达式是用于检查字符串中模式的一组字符。
- 它们也被称为“regexp”和“regex”。
- 学习正则表达式对于编写脚本很重要。
- 一些基本正则表达式是
符号 | 描述 |
---|---|
. | 替换任意字符 |
^ | 匹配字符串的开头 |
$ | 匹配字符串的结尾 |
- 一些扩展正则表达式是
表达式 | 描述 |
---|---|
\+ |
匹配前一个字符一次或多次 |
\? | 匹配前一个字符零次或一次 |
- 一些区间正则表达式是
表达式 | 描述 |
---|---|
{n} | 精确匹配前一个字符出现“n”次 |
{n,m} | 匹配前一个字符出现“n”次,但不能超过 m 次 |
{n, } | 仅当前一个字符出现“n”次或更多次时才匹配 |
- 花括号展开用于生成字符串。它有助于从一个字符串创建多个字符串。