У меня есть файл 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
Используя 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
Используя 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
с помощью 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