使用grep的regex的10个实用示例
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"后,我们可以看到该行作为输出。
我们可以对文件中的任何其他元素执行相同的搜索。