在grep中转义双引号


91

我想对带有双引号的关键字进行grep操作。举一个简单的例子:

echo "member":"time" | grep -e "member\""

那不匹配。我该如何解决?

Answers:


133

问题是您没有正确转义输入字符串,请尝试:

echo "\"member\":\"time\"" | grep -e "member\""

或者,您可以在单引号内使用不转义的双引号:

echo '"member":"time"' | grep -e 'member"'

尽管第二种方法阻止您将命令嵌套在另一组单引号(例如ssh 'cmd')中,但您会更清楚地了解到这是一个优先事项。


1
这会工作吗?echo '"member":"time"' |grep -e "member"没有测试
蚂蚁

几乎。它必须是echo '"member":"time"' |grep -e 'member"'。两种方法都是有效的,但是我更倾向于显式转义,因为其意图更加明确。
cmh 2012年

是的,也许编辑你的答案,如果你喜欢一个人可能会更喜欢这个(+1)
蚂蚁

对于我来说,这(使用反斜杠)在Windows上不起作用。实际上它部分起作用,但是我无法将输出重定向到文件。
Radim Cernej '19

我建议使用@RadimCernej询问Windows特定问题-似乎不在此范围之内。
cmh
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.