«sed» преобразует один параметр в один дублированный абзац - PullRequest
0 голосов
/ 19 июня 2019

Я должен проанализировать файл, который содержит несколько информации. такие как:

... some configs
CONFIGURATION = {
    "MASTER": "VALUE",
    "WORKER": "VALUE"
}

CONFIGURATION_RECENT = {
    "MASTER": "VALUE",
    "WORKER": "VALUE"
}
... some others configs

Я бы хотел иметь возможность независимо обновлять значение WORKER, указанное в CONFIGURATION, и значение, указанное в CONFIGURATION_RECENT.

единственное значение, на которое мы можем положиться, это "КОНФИГУРАЦИЯ" и "КОНФИГУРАЦИЯ", а значения клавиш РАБОЧИЙ и МАСТЕР .. могут меняться.

Как вы думаете, возможно ли обновить его с помощью команды sed? или, может быть, awk. В настоящее время я работаю под Ubuntu.

Большое спасибо за вашу помощь Томас

1 Ответ

1 голос
/ 19 июня 2019

С 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 может интерпретировать как команду.


См .: Часто задаваемые вопросы о регулярных выражениях переполнения стека и man sed

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...