使用grep的regex的10个实用示例

时间:2020-02-23 14:41:42  来源:igfitidea点击:

Grep或者全局正则表达式打印用于在Linux系统中搜索文本或者模式。
它可以搜索文件,目录,甚至其他命令的输出。

正则表达式是可以根据用户需要匹配文本的模式。
这些就像模式匹配的规则。

Grep通常与正则表达式一起使用以搜索文本中的模式。
我们来看一些使用grep的正则表达式的实际示例。

1.匹配单词,不论大小写

有时在文本中,可以用不同的方式来写相同的单词。
对于专有名词,这是最常见的情况。
有时不是以大写字母开头,而是全部以小写字母书写。

$grep "[Jj]ayant" 

不论大小写,该词的两个版本均已匹配。

另一个有趣的例子是" IoT"一词。
类似的单词可能在文本中以不同的变体出现多次。
匹配所有单词,无论大小写如何使用:

$grep "[iI][oO][tT]"

2.使用正则表达式和grep匹配手机号码

正则表达式可用于从文本中提取手机号码。

手机号码的格式必须事先知道。
例如,用于匹配手机号码的正则表达式不适用于家庭电话号码。

在此示例中,将采用以下格式的手机号码:91-1234567890(即TwoDigit-TenDigit)。

$grep "[[:digit:]]\{2\}[ -]\?[[:digit:]]\{10\}"

显然,只有上述格式的手机号码是匹配的。

3.匹配电子邮件地址

从文本中提取电子邮件地址非常有用,可以使用grep实现。

电子邮件地址具有特定格式。
" @"之前的部分是用于标识邮箱的用户名。
然后是一个域名,例如gmail.com或者yahoo.in。

可以设计正则表达式来牢记这些注意事项。

$grep -E "[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}"

电子邮件输入文件
grep command on input.txt- [A-Za-z0-9 ._%+-] +捕获" @"之前的用户名

  • [A-Za-z0-9 .-] +捕获不带" .com"部分的域名

  • [A-Za-z] {2,6}捕获" .com"或者" .in"等。

4. URL检查器

URL具有特定的表示格式。
可以构建一个正则表达式来验证URL是否采用正确的格式。

URL必须以http/https/ftp开头,后跟"://"。
然后是一个以" .com","。
in","。
org"等结尾的域名。

$grep -E "^(http|https|ftp):[\/]{2}([a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,4})"

域.txt的输入文本

Grep在domain.txt上

在本示例和前一个示例中使用的-E表示扩展grep,它使用扩展正则表达式集而不是基本正则表达式集。
这意味着某些特殊字符不需要转义。
它使编写复杂的正则表达式的过程不那么麻烦。
在此处了解更多信息。

5.查找具有特定扩展名的文件

ls命令显示当前目录中的所有文件。

运行ls -l可提供有关文件的更多信息。
Grep可以与ls -l命令一起使用,以匹配其输出中的模式。

要获取以扩展名" .txt"保存的文件,请使用:

$ls -l | grep '.txt$' 

6.在括号内查找内容

文本文件通常在括号内包含内容。
我们可以使用带有grep的正则表达式来提取它们。

$grep "([A-Za-z ]*)"

正则表达式将选择位于括号内的文本。
也可以指定括号内内容的长度。

例如,要仅用10个字符匹配括号,请使用:

$grep "([A-Za-z ]{10})"

7.匹配以特定单词开头的行

我们可以使用正则表达式来查找以特定单词开头的行。

input.txt的内容

要查找以苹果这个词开头的行,请使用:

grep '^Apples' input.txt 

同样,也可以找到以任何其他单词开头的行。

我们可以使用以下正则表达式匹配以特定单词结尾的行。

$grep 'apples.$' input.txt

8.一次匹配多个单词

让我们用正则表达式匹配多个单词,如下所示:

$grep 'Apples\|Orange' input.txt

该命令在两个字之间的OR处起作用。
它匹配包含两个单词之一的行。

要在两个词之间进行"与"运算,请使用:

$grep 'Apple' input.txt | grep 'Orange

9.以不同形式匹配相同的单词

有时,单词可能以不同的形式出现。
它们可能会根据使用时态而有所不同。

去皮和去皮就是这样的例子。
在这两个词中,词根均是"皮"

我们可以使用正则表达式来匹配单词的所有形式。

在我们的文字中,我们分别将剥皮和剥皮拼写为剥皮和剥皮。

我们也可以通过类似的方式将美国英语翻译为英国英语。
例如,颜色一词变成颜色。

$grep 'peal\([a-z]*\)\(\.*[[:space:]]\)' input.txt

10.在/etc/passwd文件中找到用户

grep可用于从/etc/passwd /文件中获取用户。
/etc/passwd文件维护系统上的用户列表以及一些其他信息。

$grep "Adam" /etc/passwd 

该命令在系统文件上使用grep。
找到单词" Adam"后,我们可以看到该行作为输出。
我们可以对文件中的任何其他元素执行相同的搜索。