我有一个文件jail.local
,它有这样的部分
[apache]
enabled = true
logpath = /var/log/apache/error.log
[ssh]
enabled = false
port = ssh
我想要
- 匹配字符串
[ssh]
和 - 对下面的字符串 2 行执行替换,即更改
enabled = false
到enabled = true
这样新的文本就变成了
[ssh]
enabled = true
port = ssh
我已经看过使用sed
,但我无法理解解决这个问题所需的命令sed
是相当“每行”导向的。
我该如何进行这种替换?
答案1
使用 GNU sed:
sed -e '/\[ssh\]/,+2{s/false/true/}' file
使用 POSIX sed:
sed -e '/\[ssh\]/n;n;s/false/true/' file