我正在使用Windows,我想从目录中找到所有字符串beetwen引号。例如,如果我有这个:
string s = "Hello World!"
grep命令应该返回“Hello World!”。 我是这样做的:
grep -Roe \"[^\"]*\" directory
我需要将输出重定向到文件,但是当我重定向输出时,就像这个“grep -Roe \”[^ \“] * \”目录>记录“我收到以下错误:
>: Invalid argument
log: No such file or directory
您知道如何解决此问题并重定向输出?
答案 0 :(得分:0)
这是一个非常古老的问题,到目前为止,OP已经解决了这个问题......但是对于子孙后代,值得注意的是问题与编译器约定有关(参见this question ,并找到答案#34; 你没有使用Unix shell。引用不同")。
正如您已经发现的那样,虽然您的表达式在命令行中可以正常工作,但当它与重定向结合使用时,它会被错误地解析。
解决方案是使用插入符号^
)来避免双引号,而不是反斜杠(\
)。你也需要逃脱插入符号(带插入符号)。您还应该将整个搜索表达式用单引号括起来。
使用插入符号转义(并封装在''
中)重新制定命令会产生
grep -Roe '^"[^^^"]*^"' directory > log
我使用这一点来从遗留的HTML文件中获取样式属性(基本上是由前编码员编写的,他们并不相信将内容与演示文稿分开) - 在这种情况下我使用
grep -iown 'style=^"[^^^"]*^"' index.html > styles.txt
它就像一个魅力。
想象一个代码存储库,其中HTML文件中的每个文件,甚至p
标记都类似于<p style="margin-left:20px;margin-top:20px; font: normal 12px Arial; color#FFFFFF">
。啧。