【发布时间】:2019-12-09 16:55:24
【问题描述】:
我正在尝试匹配模式并将其设置为变量。
我有一个包含许多“value=key”的文件。我想找到键“fizz”的值。 在文件中我有这个字符串
fizz="something_cool"
我尝试将其解析为:
cat file | grep fizz="(.*)"
我在想它会给我组输出,然后我就可以使用$1 来选择它。
我也玩转义字符和sed 和awk。但我无法让它工作。
【问题讨论】:
我正在尝试匹配模式并将其设置为变量。
我有一个包含许多“value=key”的文件。我想找到键“fizz”的值。 在文件中我有这个字符串
fizz="something_cool"
我尝试将其解析为:
cat file | grep fizz="(.*)"
我在想它会给我组输出,然后我就可以使用$1 来选择它。
我也玩转义字符和sed 和awk。但我无法让它工作。
【问题讨论】:
您需要启用扩展正则表达式以使用未转义的 ( 和 ) 并正确使用引号模式:
grep -E 'fizz="(.*)"' file
但是awk 在这里可能是更好的选择,因为它会在同一命令中进行搜索和过滤。
你可以使用:
awk -F= '$1 == "fizz" {gsub(/"/, "", $2); print $2}' file
something_cool
【讨论】: