2026年01月22日/ 浏览 5

在Shell中,正则表达式通常用于文本处理和模式匹配。Shell支持不同的正则表达式引擎,其中最常见的是基于POSIX标准的正则表达式引擎。
正则表达式:a.b 匹配 "axb"、"aab" 等。
*:匹配前面的字符零次或多次。正则表达式:a*b 匹配 "ab"、"aab"、"aaab" 等。
+:匹配前面的字符一次或多次。正则表达式:a+b 匹配 "ab"、"aab" 等。
?:匹配前面的字符零次或一次。正则表达式:a?b 匹配 "ab" 和 "b"。
[]:匹配字符集中的任何一个字符。正则表达式:[aeiou] 匹配任何元音字母。
[^]:匹配不在字符集中的任何一个字符。正则表达式:[^0-9] 匹配任何非数字字符。
|:逻辑或操作,用于匹配多个模式中的一个。正则表达式:pattern1|pattern2 匹配 "pattern1" 或 "pattern2"。
^:匹配行的开头。正则表达式:^start 匹配以 "start" 开头的行。
$:匹配行的结尾。正则表达式:end$ 匹配以 "end" 结尾的行。
\:转义字符,用于匹配特殊字符本身。正则表达式:\. \* \+ 匹配 ".", "*", "+" 字符。
():用于创建捕获组,可以将匹配的子字符串提取出来。正则表达式:(\d{2})-(\d{2})-(\d{4}) 匹配日期,并创建三个捕获组,分别匹配日、月和年。
\d、\D、\w、\W、\s、\S、:字符类别缩写,分别匹配数字、非数字、字母、非字母、空白字符、非空白字符。\b 表示单词边界(word boundary)。用于匹配单词的开始或结束位置,而不匹配具体的字符。正则表达式:\d{3} 匹配三个连续数字。
匹配文本:你可以使用grep命令来查找文件中与正则表达式匹配的文本行。
grep pattern filename例如,要在文件example.txt中查找包含"apple"的行,可以使用以下命令:
grep apple example.txt使用.匹配任意字符:.表示匹配任意单个字符。
grep a.b filename例如,要查找包含"aab"、"axb"等的行,可以使用上述命令。
使用*匹配零个或多个字符:*表示匹配前面的字符零次或多次。
grep a*b filename例如,要查找包含"ab"、"aab"、"aaab"等的行,可以使用上述命令。
使用+匹配一个或多个字符:+表示匹配前面的字符一次或多次。
grep a+b filename例如,要查找包含"ab"、"aab"等的行,可以使用上述命令。
使用?匹配零个或一个字符:?表示匹配前面的字符零次或一次。
grep a?b filename例如,要查找包含"ab"和"b"的行,可以使用上述命令。
使用[]匹配字符集:[]用于匹配字符集中的任何一个字符。
grep [aeiou] filename例如,要查找包含任何元音字母的行,可以使用上述命令。
使用^和$匹配行的开头和结尾:^表示匹配行的开头,$表示匹配行的结尾。
grep ^start filename grep end$ filename例如,要查找以"start"开头和以"end"结尾的行,可以使用上述命令。
使用|进行逻辑或操作:|用于在正则表达式中执行逻辑或操作。
grep pattern1\|pattern2 filename例如,要查找包含"pattern1"或"pattern2"的行,可以使用上述命令。
匹配IP地址:
# 匹配IPv4地址 grep -oE \b([0-9]{1,3}\.){3}[0-9]{1,3}\b your_file.txt # 匹配IPv6地址 grep -oE \b[0-9a-fA-F:]+\b your_file.txt这些命令将从your_file.txt文件中提取匹配的IPv4和IPv6地址。你可以根据需要修改正则表达式。
匹配HTTP网址:
grep -oE https?://\S+ your_file.txt这个命令将从your_file.txt文件中提取匹配的HTTP和HTTPS网址。
匹配电话号码:
grep -oE \b[0-9]{3}-[0-9]{3}-[0-9]{4}\b your_file.txt这个命令将从your_file.txt文件中提取匹配的电话号码,格式为"xxx-xxx-xxxx"。
匹配邮箱地址:
grep -oE \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b your_file.txt这个命令将从your_file.txt文件中提取匹配的标准邮箱地址。
以上的命令使用了grep命令的-o选项,它用于只输出匹配的部分,而不是整行文本。正则表达式使用了扩展正则表达式语法(-E选项),这使得更复杂的正则表达式模式得以支持。
未完待续...