我在Windows 7命令提示符下使用GNU grep。
我有一个 jsutfstr.txt 文件,其内容如下:
some lines
HELLO("abc",adf)
HELLO("def", sd)
some lines
some lines
some lines
我想要点击 HELLO (..)模式。在Windows命令提示符中,我使用了这些:
C:\bin>Egrep HELLO\(\"[^)]+\) jsutfstr.txt
HELLO("abc",adf)
HELLO("def", sd)
C:\bin>Egrep HELLO\([^)]+\) jsutfstr.txt
所以,第二种模式没有产生任何结果。我不明白为什么我必须明确指定\。是不是[^]]匹配的所有内容都不等于),包括双引号?
答案 0 :(得分:3)
问题是您首先运行解析该行的shell,而^
是cmd
的转义字符。因此,在第二种情况下传递给grep
的行是
Egrep HELLO\([)]+\) jsutfstr.txt
虽然在第一种情况下"
启动了一个引用的参数,cmd
将无法查看。
你可以引用完整的参数来避免这种情况:
Egrep "HELLO\([^)]+\)" jsutfstr.txt