我在 UNIX 中有 file1.txt,如下
[Section A]
$param1=value1
$param2=value2
[Section B]
$param1=value1
$param2=value2
$param3=value3
我想以编程方式将 B 部分中的 value2 编辑为 new_value2
[Section A]
$param1=value1
$param2=value2
[Section B]
$param1=value1
$param2=new_value2
$param3=value3
知道执行此操作的 unix 命令应该是什么(使用 sed?)吗?
非常感谢。
最佳答案
sed -ie '/^\[Section B\]$/,/^$/s/^\$param2=value2$/$param2=new_value/' foo.txt
编辑:上面的示例对于旧值和空格字符非常严格。我添加另一个可能更合适的例子。 sed 脚本由一个命令组成,并以以下地址范围为前缀:
/^\[Section B\]/,/^\[.*\]/
地址范围由两个以逗号分隔的正则表达式组成,并将以下命令限制为从第一个地址匹配的行开始,一直持续到第二个地址匹配(含)为止。
s/^\(\$param2[ \t]*=[ \t]*\).*$/\1new_value/
替换命令用范围进行实际替换。一切都在一起:
sed -ie '/^\[Section B\]/,/^\[.*\]/s/^\(\$param2[ \t]*=[ \t]*\).*$/\1new_value/' foo.txt
关于linux - 使用 SED 在 UNIX 中编辑文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10040255/