Peço desculpas se a pergunta já foi feita antes, realmente fiquei preso nessa questão por algumas horas, o que parece relativamente fácil. Consegui identificar dois padrões por meio do awk no arquivo único.
awk '/\[code\.change\..*\]/ {found=1; print; next} found && NF {print} found && !NF {exit}' filename
awk '/\[code\.test\..*\]/ {found=1; print; next} found && NF {print} found && !NF {exit}' filename
Existe a possibilidade de combinar esses dois awks em um para trocar os blocos?
um exemplo do arquivo de configuração está abaixo file.cfg
[code.change.1]
file.path=filename
file.contact=manager
file.active=TRUE
[code.test.1]
ls -la filepath
pwd
find . -name filename
Só precisa trocar a ordem da configuração. Obrigado
Com o exemplo fornecido, você poderia tentar:
Se
ed
estiver disponível/aceitável, algo como:Em uma linha
Se você estiver satisfeito com o resultado/saída
Altere
Q
paraw
se for necessária edição no local .Remova o
,p
para silenciar a saída.Veja POSIX ed.
Veja GNU ed.
Supondo que a entrada seja um arquivo de apenas 2 blocos, como mostrado no exemplo da pergunta, então usando qualquer awk:
ou:
ou com GNU awk para RS multi-char: