我有一个与以下文件相似的ini文件:
[seciton1]
key1 = 0
key2 = 0
[section2]
key1 = 0
key2 = 0
我想将“ section2”部分的key1从0更新为1。相同的准确sed命令将是什么。
SSH.NET c#库中还支持sed命令吗?如果没有,那么使用ssh.net有什么方法可以更新ini文件。
答案 0 :(得分:1)
它将在key2
之后更新section2
:
awk '/section2/ {f=1} /key2/ && f {$3=1;f=0} 1' file
[seciton1]
key1 = 0
key2 = 0
[section2]
key1 = 0
key2 = 1
要将其写回到原始文件中,请执行以下操作:
awk '/section2/ {f=1} /key2/ && f {$3=1;f=0} 1' file > tmp && mv tmp file
答案 1 :(得分:0)
这可能对您有用(GNU sed):
sed -i '/^\[/h;G;/section2/s/\(key1 = \).*/\11/m;P;d' file
复制节标题并将其附加到每一行。如果当前节标题为section2
,请用1
替换为key1
的值。
替换命令中的m
标志仅将.*
限制在第一行的其余部分(模式空间中当前两行,即当前行和附加的节头)中。