Acrescentar propriedade especificada de um cabeçalho especificado dentro de um arquivo ini

1

Eu tenho um arquivo ini contendo Cabeçalhos com os respectivos campos property para ele. Para um dado Header2 e um property2 como adiciono AppendedValue ao property2 usando sed ou awk ?

Pode haver N número de Cabeçalhos e a ordem de Cabeçalhos não precisa ser 1, 2 ou 3.

Arquivo de entrada1:

[Header1]

property1 = containsSomeValue
property2 = containsSomeValue
property3 = containsSomeValue

[Header2]

property1 = containsSomeValue
property2 = containsSomeValue
property3 = containsSomeValue


[Header3]

property1 = containsSomeValue
property2 = containsSomeValue
property3 = containsSomeValue

Arquivo de saída1:

[Header1]

property1 = containsSomeValue
property2 = containsSomeValue
property3 = containsSomeValue

[Header2]

property1 = containsSomeValue
property2 = containsSomeValue AppendedValue
property3 = containsSomeValue


[Header3]

property1 = containsSomeValue
property2 = containsSomeValue
property3 = containsSomeValue
    
por DazzlerJay 24.05.2018 / 09:04

1 resposta

1

Usando sed :

sed "/\[Header2\]/,/\[/{/^property2/ s/$/ AppendedValue/}" infile

Isso procurará as linhas entre [Header2] e [ (que seria o caractere inicial do próximo Cabeçalho desconhecido) e, em seguida, anexará a sequência AppendedValue ao final de uma linha se iniciado com property2 ; a parte {sed-script} aplica-se apenas ao bloco correspondido dentro do intervalo de padrões fornecido, e outras linhas fora deste intervalo serão impressas sem alterações, o que é% de ação padrão desed.

Você pode usar acima desta maneira também:

sed "/\[Header2\]/,/\[/{s/^property2.*/& AppendedValue/}" infile

Se você quer ser mais específico:

sed "/^\[Header2\]/,/^property2/{/^property2/ s/$/ AppendedValue/}" infile
    
por devWeek 24.05.2018 / 09:24