использование команды sed для чтения между разделами в данном файле

Возможно, это задание для регулярного выражения:

sed -e 's/\Wbackground:[^;]\+;//g'

Измените 'background:' в соответствии с тем, что вы просите.

\ W указывает на несловесный символ. [^;] соответствует всему, что не является;, один или несколько раз. За ним следует;, после чего все заменяется ничем.

1
12.04.2019, 21:45
2 ответа

Сделать так, чтобы [совпадало только в начале строки с^:

sed -n '0,/kafka_properties/d;/^\[/,$d;/^$/d;p' file.txt
2
27.01.2020, 23:30

В общем случае, записывая каждую секцию в отдельный файл без необходимости знать имена секций, вы можете:

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
0
27.01.2020, 23:30

Теги

Похожие вопросы