linux - 使用 SED 在 UNIX 中编辑文件

标签 linux file bash unix sed

我在 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/

相关文章:

linux - 将 date bash 命令中的秒数舍入到下限

linux wget 下载 tar.gz 作为 html?

javascript - 更改前缀后 npm 没有响应

linux - 如何在一段时间内保持运行一个程序?

Linux内核: Getting packets from a netdevice

linux - 如何在 Linux 中将更改后的文件上传到网站?

c - printf 调用的输出未显示在屏幕上

file - Windows Phone 8 获取文件夹 Music 或 Documents 中的文件

html - File://link 在所有浏览器中什么都不做

bash - 在 bash 中使用其他引用中的 "$@"