如何在Bash Linux中使用正则表达式-Regex?

LinuxBash为正则表达式或正则表达式提供了许多命令和特性。 grep , expr , sed awk 是其中的一些。Bash也有 =~ 名为 RE-match 接线员。在本教程中,我们将了解 =~ 操作员和用例。有关regex命令cna的更多信息,请参阅以下教程。

null

Linux Grep命令简介及实例

Awk正则表达式命令和示例

带示例的终极Sed教程

图片[1]-如何在Bash Linux中使用正则表达式-Regex?-yiteyi-C++库

语法

bash重匹配的语法非常简单,我们只需提供字符串,然后放入运算符,最后一个是要匹配的正则表达式。我们还用双括号将表达式括起来,如下所示。

[[ STRING =~ REGEX]]

匹配数字

在bashshell的日常使用中,我们可能需要匹配数字或数字。我们可以使用bash正则表达式操作符。我们将用 [0-9] 就像下面一样。但请记住,bash正则表达式在某些情况下可能相当复杂。在本例中,我们将简单地匹配给定行中的数字

 digit="ismail poftut 12345"  if [[ $digit =~ [0-9] ]]; then     echo "$digit is a digit" else     echo "oops" fi
Match Digits
匹配数字

指定行的起点

在前面的例子中,我们在整行中匹配了数字。有时情况并非如此。我们可能需要从行首匹配其他字符类型的数字。我们可以用 ^ 指定行的起点。在本例中,我们将匹配以 123 . 我们可以看到它不匹配。

digit="ismail poftut 12345"  if [[ $digit =~ ^123 ]]; then     echo "$digit is a digit" else     echo "oops" fi
Specify Start Of Line
指定行的起点

指定行尾

我们还可以在第行指定结束。我们将使用 $ 指定行尾。我们将匹配以任何数字结尾的行。

digit="ismail poftut 12345"  if [[ $digit =~ [0-9]$ ]]; then     echo "$digit is a digit" else     echo "oops" fi

匹配电子邮件

数字模式很容易表达,但是如何在bash中表达email regex呢。我们通常可以使用以下正则表达式模式来处理电子邮件。

[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+

我们将使用以下后缀 com , net , gov 因为有很多可能性。据我们所知 @ 位于用户名和域名之间。

email=$1  if [[ "$email" =~ "^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,4}$" ]] then     echo "This email address looks fine: $email" else     echo "This email address is flawed: $email" fi
Match Email
匹配电子邮件

匹配IP地址

IP地址是bash和脚本中使用的另一种重要数据类型。我们可以使用bash regex来匹配IP地址。我们将使用下面的regex模式,这与以下工具相同 grep 和其他人。

[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}

ip=$1  if [[ $ip =~ ^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$ ]]; then     echo "Looks like an IPv4 IP address" elif [[ $ip =~ ^[A-Fa-f0-9:]+$ ]]; then     echo "Could be an IPv6 IP address" else     echo "oops" fi
Match IP Address
匹配IP地址

相关文章: 如何在Windows下通过命令行添加、删除、导入、导出、管理注册表项?

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享