Shell 正则表达式 | 您所在的位置:网站首页 › 手机号正则编写 › Shell 正则表达式 |
Shell 正则表达式
在 Shell 脚本中,正则表达式是一种强大且常用的工具,它可以用来匹配、搜索、替换和截取字符串。本文将介绍 Shell 中的正则表达式,并给出一些示例代码。 Shell 正则表达式语法在 Shell 中,正则表达式使用的是 POSIX 扩展正则表达式语法(extended regular expression syntax)。常见的元字符和字符类如下: 特殊字符 含义 . 匹配任意字符 ^ 匹配行首 $ 匹配行尾 * 匹配前一个字符出现 0 次或多次 + 匹配前一个字符出现 1 次或多次 ? 匹配前一个字符出现 0 次或 1 次 | 表示或操作 [charset] 匹配字符集中的任意一个字符 [^charset] 匹配未在字符集中出现的任意一个字符 [a-z] 匹配 a 到 z 之间的任意一个小写字母 [A-Z] 匹配 A 到 Z 之间的任意一个大写字母 [0-9] 匹配 0 到 9 之间的任意一个数字 \s 匹配任意空白字符,包括空格、制表符、换行符等 \S 匹配任意非空白字符上表中的含义可能并不完全准确,具体使用时需结合实际情况理解。 Shell 正则表达式示例下面给出几个常见的 Shell 正则表达式示例,包括匹配手机号、URL 地址等: 匹配手机号 #!/bin/bash read -p "请输入手机号:" phone_number if [[ phone_number =~ ^1[3456789][0-9]{9} ]]; then echo "您输入的手机号 phone_number 符合要求" else echo "您输入的手机号phone_number 不符合要求" fi上述代码利用了 =~ 运算符来进行正则表达式匹配,其中 ^1[3456789][0-9]{9}$ 表示以 1 开头,第二位为 3/4/5/6/7/8/9 中任意一个,后面跟着 9 位数字的字符串。 查询目录下的所有 .md 文件 #!/bin/bash for file in ./*.md; do echo "$file" done上述代码利用了 ./*.md 正则表达式来匹配当前目录下的所有扩展名为 .md 的文件。 替换字符串中的数字 #!/bin/bash string="abcd1234" echo "替换前:string" # 将字符串中的所有数字替换为 # new_string=(echo "string" | sed 's/[0-9]/#/g') echo "替换后:new_string"上述代码利用了 s/[0-9]/#/g 正则表达式来将字符串中的所有数字替换为 #。 匹配 URL 地址 #!/bin/bash read -p "请输入 URL 地址:" url if [[ url =~ ^(http|https)://[a-z0-9]+(\.[a-z0-9]+){1,3}.* ]]; then echo "您输入的 URL 地址 url 符合要求" else echo "您输入的 URL 地址url 不符合要求" fi上述代码利用了 ^(http|https)://[a-z0-9]+(\.[a-z0-9]+){1,3}.*$ 正则表达式来匹配 URL 地址,其中 (http|https) 表示以 http 或 https 开头,[a-z0-9]+(.[a-z0-9]+){1,3} 表示后面跟着 1 到 3 段类似于 .xxx 的字符串,.* 表示后面还可以跟着任意字符。 Shell 正则表达式使用技巧在实际使用中,可以用一些技巧来简化正则表达式的书写和匹配过程。 使用 grep 命令grep 命令可以用来从文件或标准输入中搜索指定的模式,并输出匹配的行。它的使用非常简单,如下所示: grep pattern file其中 pattern 表示要匹配的正则表达式,file 表示要搜索的文件。 例如,查找文件 test.txt 中包含单词 hello 的行: grep hello test.txt 使用 awk 命令awk 命令可以用来对文本进行分割、筛选、统计等操作,它的使用也非常简单,如下所示: awk '/pattern/ { action }' file其中 pattern 表示要匹配的正则表达式,action 表示匹配成功后要执行的操作,file 表示要处理的文件。 例如,查找文件 test.txt 中长度大于 10 的行: awk 'length > 10' test.txt 使用 sed 命令sed 命令可以用来进行匹配和替换操作,它的使用也非常简单,如下所示: sed 's/pattern/replacement/' file其中 pattern 表示要匹配的正则表达式,replacement 表示用来替换匹配文本的字符串,file 表示要处理的文件。 例如,将文件 test.txt 中的所有空格替换为下划线: sed 's/ /_/g' test.txt 结论Shell 正则表达式是一种非常常用的工具,在字符串匹配、搜索、替换和截取方面有着广泛的应用。熟练掌握正则表达式的语法和使用方法,可以极大地提高脚本编写的效率和质量。 |
CopyRight 2018-2019 实验室设备网 版权所有 |