如何 grep 匹配一行中的两个字符串,或者文件或命令输出中的任何位置
命令行 grep 工具非常强大,对于在文件中搜索匹配项、对文本和数据排序、在大文件中查找字符串等等非常有用。许多命令行用户可能会遇到的一种常见情况是寻求在一行中查找两个不同字符串的 grep 匹配。
您可以在 MacOS 的终端中使用 grep 来实现此目的,或者使用任何其他基于 UNIX 的命令行提示符,无论是 Linux、Windows WSL、任何版本的 MacOS / Mac OS X,甚至是已 root 的 iOS/iPadOS(如果您喜欢此类操作)。
在命令行中,尝试使用以下语法来 grep 匹配同一行中的两个字符串:
grep "string1" /path/to/file |grep "string2"
例如,这可能如下所示:
grep "error" /var/log/messages |grep "critical"
使用 grep 匹配文件或命令输出中任意位置的两个字符串
另一种常见情况是需要使用 grep 来匹配文件中或另一个命令的输出中任意位置包含的两个不同字符串。您可以使用 -e 标志来实现此目的,如下所示:
grep -e String1 -e String2
建议阅读:如何从命令行获取 Windows 10 的实际版本号?
例如,对于命令输出,您可以使用以下命令字符串,在本例中匹配“CurrentCapacity”和“MaxCapacity”:
ioreg -l| grep -e CurrentCapacity -e MaxCapacity
该命令行适用于高级用户,但 grep 是一个相当宽容的命令,如果您是命令行新手,那么这是一个值得探索和研究的合理命令。
请记住,如果您想进一步优化匹配和命令输出,您还可以从 grep 中排除字符串。
如果您有另一种方法来匹配文件中的两个字符串或匹配命令输出中的多个字符串,请在下面的评论中与我们分享。
