gpt4 book ai didi

regex - 如何在 Cygwin 中的 grep 中使用正则表达式 OR?

转载 作者:行者123 更新时间:2023-12-03 05:59:29 24 4
gpt4 key购买 nike

我需要从单个文件返回两个不同匹配的结果。

grep "string1" my.file

正确返回 my.file 中 string1 的单个实例

grep "string2" my.file

正确返回 my.file 中 string2 的单个实例

但是

grep "string1|string2" my.file

不返回任何内容

在正则表达式测试应用程序中,语法是正确的,那么为什么它不适用于 cygwin 中的 grep ?

最佳答案

在基本正则表达式中使用 | 字符而不对其进行转义将仅匹配 | 文字。例如,如果您有一个包含内容的文件

string1
string2
string1|string2

使用 grep "string1|string2"my.file 将仅匹配最后一行

$ grep "string1|string2" my.file
string1|string2

为了使用交替运算符|,您可以:

  1. 使用基本正则表达式(只需 grep)并转义正则表达式中的 | 字符

    grep "string1\|string2"my.file

  2. 使用带有 egrepgrep -E 的扩展正则表达式,正如 Julian 已在 his answer 中指出的那样。

    grep -E "string1|string2"my.file

  3. 如果要匹配两种不同的模式,也可以在-e选项中分别指定:

    grep -e "string1"-e "string2"my.file

您可能会发现 grep 引用的以下部分很有用:

关于regex - 如何在 Cygwin 中的 grep 中使用正则表达式 OR?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7874751/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com