Добавление указанного свойства указанного заголовка в файл ini

У меня есть файл ini, содержащий заголовки с соответствующими полями свойств. Для данного заголовка2 и свойства2 как добавить AppendedValue в свойство2 с помощью sed или awk?

Может быть Headers число заголовков и порядок заголовков не должен быть 1, 2 или 3.

Входной файл1:

[Header1] property1 = containsSomeValue property2 = containsSomeValue property3 = containsSomeValue [Header2] property1 = containsSomeValue property2 = containsSomeValue property3 = containsSomeValue [Header3] property1 = containsSomeValue property2 = containsSomeValue property3 = containsSomeValue

Выходной файл1:

[Header1] property1 = containsSomeValue property2 = containsSomeValue property3 = containsSomeValue [Header2] property1 = containsSomeValue property2 = containsSomeValue AppendedValue property3 = containsSomeValue [Header3] property1 = containsSomeValue property2 = containsSomeValue property3 = containsSomeValue
1
задан 24 May 2018 в 17:13

3 ответа

Используя sed:

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

Это будет искать линии между [Header2] и [ (которые будут начальным символом следующего неизвестного заголовка), затем добавьте AppendedValue в конец строки, если она начинается с property2; часть {sed-script} применяется только для блока, согласованного в заданном диапазоне шаблонов, и другие строки из этого диапазона будут напечатаны без изменений, которые являются действием по умолчанию sed.

Вы можете использовать выше и так:

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

Если вы хотите быть более конкретным:

sed "/^\[Header2\]/,/^property2/{/^property2/ s/$/ AppendedValue/}" infile
1
ответ дан 8 June 2018 в 13:59

Используя sed:

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

Это будет искать линии между [Header2] и [ (которые будут начальным символом следующего неизвестного заголовка), затем добавьте AppendedValue в конец строки, если она начинается с property2; часть {sed-script} применяется только для блока, согласованного в заданном диапазоне шаблонов, и другие строки из этого диапазона будут напечатаны без изменений, которые являются действием по умолчанию sed.

Вы можете использовать выше и так:

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

Если вы хотите быть более конкретным:

sed "/^\[Header2\]/,/^property2/{/^property2/ s/$/ AppendedValue/}" infile
1
ответ дан 17 July 2018 в 13:35

с помощью sed:

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

это будет выглядеть на линии между [Header2] и [ (который может быть символ начала следующего неизвестный Заголовок), затем добавить AppendedValue строку в конец строки, если начали с property2; в {sed-script} часть применяется только для блока в схемы диапазоне, а другие строки из этой серии будут печататься без изменения [F10] для умолчанию действий.

Вы можете использовать выше в этом кстати тоже:

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

если вы хотите быть более конкретным:

sed "/^\[Header2\]/,/^property2/{/^property2/ s/$/ AppendedValue/}" infile
1
ответ дан 20 July 2018 в 13:40

Другие вопросы по тегам:

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