我正在尝试使用sed查找和替换eval_config: {.*}
的多行正则表达式模式。
我有一个文本文件,其中包含以下内容:
eval_config: {
<variable number of lines and contents>
}
我想用这样的东西替换它:
eval_config: {
<completely different variable number of lines and contents>
}
那么我该如何匹配和替换呢?使用:
sed -i 's/eval_config: {.*\+}/replacement_text/g' filename
似乎停在换行符上。
详细信息:
我正在从Jupyter笔记本单元中使用sed并将新的eval_config
构造为python多行字符串,如下所示:
filename = 'file.txt'
new_eval_config_example = '''eval_config: {{
metrics_set: {}
use_moving_averages: false
num_examples: {}
}}'''.format(metrics_set, val_count)
!sed -i '/eval_config: .*\+/{re.escape(new_eval_config_example)}/g' {filename}
更新
<variable number of lines and contents>
将不包含}
eval_config
}
将始终保持一行答案 0 :(得分:1)
这可能是最简单的方法:
sed '/^eval_config: {/,/^}/c\
replacement\
more replacement' data.txt
答案 1 :(得分:0)
在gnu sed上尝试
render