我正在努力寻找
大会="Foobar的
在所有文件中并将输出定向到tmp.txt
我试过(cmd /错误)
grep -r"Assembly = \"Foobar".>> tmp.txt错误(无效参数)
grep -r"Assembly =""Foobar".>> tmp.txt
错误(空间不够)grep -r'Assembly ="Foobar'.>> tmp.txt
错误(空间不够)
很沮丧.有什么建议?
dbe*_*ham 14
您需要担心转义grep和cmd.exe的引号
grep期望报价被转义为 \"
cmd.exe将引号转义为^"
.引用是状态机,意味着未转义的引号切换引用语义开启和关闭.当报价是一样的特殊字符<
,|
,&
,等被视为文字.第一个未转义的引用打开引用语义.下一个报价将引用语义关闭.当引用为OFF时,只能转义引号.不平衡报价导致其余部分被引用.因此,在您的情况下,>>tmp.txt
cmd.exe不会将其视为重定向,因此它将作为参数传递给grep.
以下任何一项都有效:
grep -r "Assembly=\"Foobar^" . >>tmp.txt
grep -r ^"Assembly=\"Foobar" . >>tmp.txt
grep -r ^"Assembly=\^"Foobar^" . >>tmp.txt
grep -r Assembly=\^"Foobar . >>tmp.txt
Run Code Online (Sandbox Code Playgroud)
如果您的搜索词包含空格,那么grep需要封闭的引号,因此您需要前三个表单中的任何一个.最后一种形式不适用于搜索词中的空格.