LINUX.ORG.RU

Редактирование ini-подобного файла в командной строке

 


0

2

Нужно удалять целую секцию в ini-подобном файле.

Т.е. найти нужную строку с заголовком секции, такого вида '[Section Name]' и удалять до первой попавшейся начинающейся с '[' строки, при этом её трогать нельзя.

Попробовал на sed:

sed -e '/^\[Section Name/,/^\[/d'
Но удаляется, как раз строка начинающаяся с '[', которая, как я уже написал, должна остаться.

Надеюсь на скорую помощь )).

Дополните кто-нибудь, чтобы сами паттерны не удаляло:

echo -e "[bla]\ntest1=123\ntest2=321\n[bla2]\ntest3=22"|sed  '/\[bla\]/,/\[/d'

minakov ★★★★★
()

Посмотри в сторону csplit(1)

dexpl ★★★★★
()

Погляди в сторону perl. Он для таких задач и предназначен. Сейчас навскидку код предложить не могу - голова после 8 марта работает не очень.

cadaber ★★
()
Последнее исправление: cadaber (всего исправлений: 1)
Ответ на: комментарий от anonymous

ёпт

$ echo '[c]
[a]
b
b
[c]
b
[a]
[c]
b' |awk '/^\[[^\]]+\]/{a=0}/^\[a\]/{a=1;print}{if(!a)print}'

[c]
[a]
[c]
b
[a]
[c]
b

anonymous
()
Ответ на: комментарий от minakov

2 minakov

sed '/\[bla\]/,/\[/d'

я сделал тоже самое. Разве что в твоём случае, если '[bla]' встретится в содержании какого-либо элемента, то sed сработает и на эту строку.

2 dexpl Посмотрю на досуге, спасибо за наводку )).

2 cadaber Возможно в следующей жизни, когда время не будет слишком поджимать.

2 anonymous Спасибо!

anion155
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.