【问题标题】:Regex group match using shell [duplicate]使用外壳的正则表达式组匹配[重复]
【发布时间】:2019-12-09 16:55:24
【问题描述】:

我正在尝试匹配模式并将其设置为变量。

我有一个包含许多“value=key”的文件。我想找到键“fizz”的值。 在文件中我有这个字符串

fizz="something_cool"

我尝试将其解析为:

cat file | grep fizz="(.*)"

我在想它会给我组输出,然后我就可以使用$1 来选择它。

我也玩转义字符和sedawk。但我无法让它工作。

【问题讨论】:

    标签: regex bash shell


    【解决方案1】:

    您需要启用扩展正则表达式以使用未转义的 () 并正确使用引号模式:

    grep -E 'fizz="(.*)"' file
    

    但是awk 在这里可能是更好的选择,因为它会在同一命令中进行搜索和过滤。

    你可以使用:

    awk -F= '$1 == "fizz" {gsub(/"/, "", $2); print $2}' file
    

    something_cool
    

    【讨论】:

    • 是的。我需要稍微调整一下,但这解决了手头的问题。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-05
    相关资源
    最近更新 更多