我必须解析一个包含多个信息的文件。例如:
... some configs
CONFIGURATION = {
"MASTER": "VALUE",
"WORKER": "VALUE"
}
CONFIGURATION_RECENT = {
"MASTER": "VALUE",
"WORKER": "VALUE"
}
... some others configs
我希望能够独立更新CONFIGURATION中的WORKER值和CONFIGURATION_RECENT中的WORKER值。
我们唯一可以依赖的值是“ CONFIGURATION”和“ CONFIGURATION”,并且WORKER和MASTER ..键的值可以更改。
您认为可以使用sed命令对其进行更新吗?也许是awk。我目前在Ubuntu下工作。
非常感谢您的帮助 托马斯
答案 0 :(得分:1)
使用bash和GNU sed:
section_start="^CONFIGURATION ="
section_end="^}"
key="WORKER"
new_value="foobar42"
sed -r "/${section_start}/,/${section_end}/{s/(\"${key}\": \").*(\")/\1${new_value}\2/}" file
输出:
... some configs CONFIGURATION = { "MASTER": "VALUE", "WORKER": "foobar42" } CONFIGURATION_RECENT = { "MASTER": "VALUE", "WORKER": "VALUE" } ... some others configs
$new_value
不应包含sed
可以解释为命令的任何字符。
请参阅:The Stack Overflow Regular Expressions FAQ和man sed