【发布时间】:2015-02-05 22:48:50
【问题描述】:
为了在 INI 文件部分的末尾添加一个键/值对,我想:
找到匹配的部分名称并检查下一个方括号(即 ^[)是否可用。如果是这样,请在这些行中查找键/值对的最后一次出现(即从匹配部分名称到下一个方括号)。在最后一次出现的键/值对的末尾插入键/值对。
如果下一个方括号不可用,则将键/值对附加到文件末尾。
对于情况(1),我可以使用 sed 检查下一个方括号是否可用,即
sed -i -e "/^\[$section\]/,/^\[.*\]/ ..."
但是,我不知道如何匹配最后一次出现的 key=value。匹配最后一次出现的原因(而不是在下一个方括号之前添加 ke/value 对)是因为我可以选择在 INI 文件中的新键/值对之前引入换行符或不引入换行符。例如,如果我想添加 key10=value10
[section1]
...
key8=value8
key9=value9
\n (could be multiple newline)
[section2]
变成了
[section1]
...
key8=value8
key9=value9
\n (optional)
key10=value10
\n (could be multiple newline)
[section2]
请您建议我如何实现这一目标?
【问题讨论】:
-
你能发布预期的输出吗?
-
为什么会有
\n?键值对之间没有换行符吗? -
我想在键/值对之间插入换行符
-
您选择在需要时添加
\n(部分缺失)或其他条件?事实上,我们是否可以假设该部分以\n结尾,或者一个新的方括号部分或 EOF -
考虑您有不同的 INI 文件编写方式。有些人倾向于在键/值对之间放置换行符,而有些人则没有(它可能在一个部分的末尾和下一部分的开头之前有多个换行符)。所以主要思想是匹配最后一次出现的键/值对而不是匹配换行符。