我正在尝试从目录树中的文件中获取带有单引号或双引号的行。举个例子,我想用一个findtr命令来获取这些行:
You should be able to get a "Hello world" program really quick.
Enter a value for params 'name' and 'age', please.
If no value is entered for 'name' param, the "Hello world" program will throw an exception.
我只能使用单引号(findstr /srn \' *.txt
),只有双引号(findstr /srn \^" *.txt
),或单引号和双引号(findstr /srn \'\^" *.txt
),但我需要单行引号或只用一个命令的双引号。
有关如何实现它的任何想法?
答案 0 :(得分:3)
Explosion Pills有正确的想法,但没有正确的语法。
尝试转义FINDSTR和CMD解析器的引用时可能会变得棘手。你想要的正则表达式是['\"]
,但是你需要为CMD解析器转义"
。
这将有效:
findstr /srn ['\^"] *.txt
这样
findstr /srn "['\"]^" *.txt
这样
findstr /srn ^"['\^"]^" *.txt
的 注 强>
由于一个令人讨厌的FINDSTR错误,您有可能无法找到包含该字符串的文件。如果启用了8.3短名称且文件夹包含扩展名超过3个以/S
开头的字符的文件,则.txt
选项可能无法找到文件。 (例如name.txt2
)。有关详细信息,请参阅标有 BUG - Short 8.3文件名可以在What are the undocumented features and limitations of the Windows FINDSTR command?打破/ D和/ S选项 的部分。
答案 1 :(得分:1)
使用字符类
findstr /srn ['\^"] *.txt