如何使用sed更新特定部分中的特定密钥?

时间:2019-07-17 05:19:37

标签: sed ini ssh.net

我有一个与以下文件相似的ini文件:

[seciton1]
key1 = 0
key2 = 0
[section2]
key1 = 0
key2 = 0

我想将“ section2”部分的key1从0更新为1。相同的准确sed命令将是什么。

SSH.NET c#库中还支持sed命令吗?如果没有,那么使用ssh.net有什么方法可以更新ini文件。

2 个答案:

答案 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标志仅将.*限制在第一行的其余部分(模式空间中当前两行,即当前行和附加的节头)中。