Возможно, это задание для регулярного выражения:
sed -e 's/\Wbackground:[^;]\+;//g'
Измените 'background:' в соответствии с тем, что вы просите.
\ W указывает на несловесный символ. [^;] соответствует всему, что не является;, один или несколько раз. За ним следует;, после чего все заменяется ничем.
Сделать так, чтобы [
совпадало только в начале строки с^
:
sed -n '0,/kafka_properties/d;/^\[/,$d;/^$/d;p' file.txt
В общем случае, записывая каждую секцию в отдельный файл без необходимости знать имена секций, вы можете:
awk '/^\[/{n=$1;gsub(/[][]/,"",n)}{print >> n".txt"}' file
Эти файлы будут созданы из вашего примера:
kafka_ports.txt kakfa_properties.txt zookeeper_properties.txt
/^\[/{n=$1;gsub(/[][]/,"",n)}
:если эта строка начинается с [
, сохраните 1-е поле как переменную n
и удалите из него все [
или ]
. print >> n".txt"
:добавить текущую строку в файл n.txt
, где n
— имя раздела. Обратите внимание, что это предполагает отсутствие пробелов в имени раздела. Если вы это сделаете, попробуйте вместо этого:
awk '/^\[/{n=$0;gsub(/[][]/,"",n); gsub(/ /,"_",n)}{print >> n".txt"}' file