regex - 来自 dos 窗口的带有 "or"的 grep 命令行 (gnu grep)

标签 regex windows command-line grep gnu

我正在尝试使用 GNU Grep(为 Win32 目标编译的 grep)为 windows7 创建一个 .bat 文件。我在使用 | 的表达式的语法上遇到问题(或),因为 DOS 命令认为我将其用作管道/重定向。这是一个示例输入 foo.txt:

aaa
bbb
ccc
aaa bbb ccc

所以我尝试了一个简单的测试:

grep aaa foo.txt

结果:

aaa
aaa bbb ccc

到目前为止,还不错。但我真的需要提取 aaa 或 bbb,所以我使用这个表达式: (aaa|bbb) 例如:

grep (aaa|bbb)

给我:

'bbb)' is not recognized as an internal or external command,
operable program or batch file.

我尝试了各种引用,但还没有找到正确的组合。我需要保护字符串不受 DOS 解释器的影响,但它仍然对 grep 有用。我阅读了手册页和网络文档,但似乎没有任何内容适合我正在尝试做的事情。

有谁知道如何做到这一点?谢谢。

最佳答案

需要引号并使用 \ 转义管道:

grep "aaa\|bbb" foo.txt

$ cat foo.txt
aaa
bbb
ccc
aaa bbb ccc

$ grep "aaa\|bbb" foo.txt
aaa
bbb
aaa bbb ccc

关于regex - 来自 dos 窗口的带有 "or"的 grep 命令行 (gnu grep),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13381783/

相关文章:

JavaScript 正则表达式替换?

Python正则表达式检查字母数字

windows - Nodejs 在 Windows 上找不到已安装的模块

Python子进程和用户交互

javascript - 如何在javascript正则表达式中替换没有html标签的字符串的每个字母

javascript - 是否可以使用正则表达式 chop 字符串的开头?

java - 在 Java 中操作 Windows 文件权限

python - PyInstaller-FileNotFoundError : No such file or directory: ''

python - 运行tornado应用程序时如何关闭终端?

php - 如何使用 grep 来列出所有文件中的所有 PHP 类?