Em um diretório, tenho muitos site.ini.append.php
(cerca de 100 arquivos).
Todos parecem:
[block1]
blabla[]
blabla[]=blabla
...
blabla[]=blabla
[block2]
blabla[]
blabla[]=blabla
...
blabla[]=blabla
[block3]
blabla[]
blabla[]=blabla
...
blabla[]=blabla
No entanto, [block1]
tem um número diferente de entradas, dependendo do arquivo. É a mesma coisa para os outros blocos.
Eu preciso adicionar uma nova linha no final de [block2]
:
[block2]
blabla[]
blabla[]=blabla
...
blabla[]=blabla
blabla[]=new_entry
E não posso usar apenas o número da linha porque, como eu disse, os blocos têm entradas diferentes e [block2]
pode ter 20 linhas em um arquivo e 10 em outro, etc.
Eu estava pensando em algo parecido com isso
sed -n '/^\[block2\]$/,/^$/ a blabla[]=new_entry' path/to/one_of_the_site.ini.append.php
Mas isso não funciona, obviamente, porque /^\[block2\]$/,/^$/
não é um endereço.
Como faço isso (de preferência usando sed)?
UPDATE
Como explicado aqui , / ^ [block2] $ /, / ^ $ / é um endereço válido.
No entanto, nem a nem i corrige o problema para mim
sed -n '/^\[block2\]$/,/^$/ a blabla[]=new_entry' path/to/one_of_the_site.ini.append.php
sed -n '/^\[block2\]$/,/^$/ i blabla[]=new_entry' path/to/one_of_the_site.ini.append.php
Environment
$ sed --version
GNU sed version 4.1.5
Copyright (C) 2003 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,
to the extent permitted by law.