0

我很难理解如何在 Windows 命令提示符中指定特殊字符^和参数。"diff在 Win 7 中使用 gnuwin32。它有一个-I从命令行接受正则表达式的选项。我想diff在指定正则表达式的批处理文件中调用。但是,我的正则表达式是一个复杂的表达式,其中包含^ "空格特殊字符:

^[ \t]*#[ \t]*include[ \t]+"c:\\program files

在这种情况下,我无法理解 Windows 在命令行中指定特殊字符的规则,其中有关于^和的特殊规则"。我将如何在命令行中指定上述正则表达式?

我想它应该是这样的:

diff -I "^[ \t]*#[ \t]*include[ \t]+"c:\\program files" file1 file2

但是"中间把整个事情搞砸了。我应该如何处理^and "

4

1 回答 1

0

经过一些研究和测试,这应该是所需的正则表达式:

diff -I "^[[:space:]]*#[[:space:]]*include[[:space:]]\+\"c:\\\\program file" file1 file2

一方面,diff使用grep不支持 Perl 样式\t序列的样式正则表达式。我们需要使用\"来指定一个字面量"

另外,不要像我一样使用 windows 批处理文件来测试传递给程序的参数。

换句话说,永远不要认为这个diff.bat带有几个echos 的批处理文件可以帮助您测试要使用的命令行参数:

echo %1
echo %2
echo %3
echo %4

为此编写和编译一个程序,并让它转储命令行参数。

于 2016-04-14T16:12:32.917 回答