【问题标题】:Escape double quote in grep在 grep 中转义双引号
【发布时间】:2019-12-08 04:42:57
【问题描述】:

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

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

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

【问题讨论】:

    标签: linux shell


    【解决方案1】:

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

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

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

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

    虽然第二种方法会阻止您将命令嵌套在另一组单引号中(例如 ssh 'cmd'),但您会发现这是一个更清楚的偏好问题。

    【讨论】:

    • 这行得通吗? echo '"member":"time"' |grep -e "member" 没有测试
    • 差不多。它必须是echo '"member":"time"' |grep -e 'member"'。两种方法都有效,但我更喜欢显式转义,因为意图更明确。
    • 是的,如果你喜欢某人可能更喜欢这个(+1),也许可以编辑你的答案
    • 这(使用反斜杠)对我来说在 Windows 上不起作用。实际上它部分有效,但我无法将输出重定向到文件。
    • @RadimCernej 我建议提出一个特定于 Windows 的问题 - 它似乎超出了这个问题的范围。
    猜你喜欢
    • 1970-01-01
    • 2013-06-17
    • 2020-11-26
    • 1970-01-01
    • 2011-04-19
    • 2014-09-28
    • 1970-01-01
    相关资源
    最近更新 更多