У меня есть файл, который в простом примере выглядит следующим образом:
some_file_name{
something
otherthing2
otherthing3
}
Как только "some_file_name" может заканчиваться концом строки, пробелом или {так что мне нужно соответствовать каждому варианту. Чтобы еще больше усложнить ситуацию, в some_file_name содержится /, так что разделитель должен быть другим ... и в конце мне нужно заменить «что-то» между some_file_name {и next}, чтобы результат был:
some_file_name{
something_replaced
otherthing2
otherthing3
}
Я дошел до:
sed -r "\%some_file_name\($\|[[:space:]]\|\{\)%,\%\}%{s/something/something_replaced/}" "file.txt"
(sed -r обязателен). Мои лучшие догадки, проблема где-то здесь: \($\|[[:space:]]\|\{\)
, где я пытаюсь сопоставить 3 возможных окончания ... но на всю жизнь я не могу понять, чего не хватает.
sed --version
sed (GNU sed) 4.2.2