我有一个包含以下内容的 ini 文件标头与各自的财产字段。对于给定的标题2和一个属性2 我如何附加AppendedValue
到属性2通过使用sed
或awk
?
可能有否数量标头和顺序标头不一定是 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
使用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