Я пытаюсь использовать 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
похоже останавливается на новых строках.
Подробности:
Я использую sed из ячейки ноутбука Jupyter и создаю новый 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
- Завершение
}
всегда будет на отдельной линии