【发布时间】:2021-12-07 14:02:32
【问题描述】:
鉴于以下(部分)olsrd.conf 文件,我想在busybox 中使用sed 或awk(尽可能)设置单个设置。
LoadPlugin "olsrd_httpinfo.so.0.1" {
# defaults to 1978
#PlParam "Port" "8080"
# if you dont set these, the default is to listen only on the loopback device
#PlParam "Host" "80.23.53.22"
#PlParam "Net" "10.0.0.0 255.0.0.0"
#PlParam "Net" "0.0.0.0 0.0.0.0"
#PlParam "Host" "127.0.0.1"
}
LoadPlugin "olsrd_txtinfo.so.1.1" {
#PlParam "port" "2006"
#PlParam "accept" "0.0.0.0"
}
LoadPlugin "olsrd_jsoninfo.so.1.1" {
#PlParam "port" "9090"
#PlParam "accept" "0.0.0.0"
}
使用 GNU sed 这在通常的 Linux 发行版中运行良好,示例如下:
MYPORT="1234"
sed -e "/^LoadPlugin.*olsrd_txtinfo.*/ , /}/ s/.*PlParam.*port.*$/PlParam \"port\" \"$MYPORT\"/I" olsrd.conf
但在busybox(v1.33.1)中,这会产生错误:sed: unsupported command ,
据我了解,busybox sed 不支持范围,因此出现此错误消息。
是否有替代方法可以使用busybox sed 或busybox awk 来实现?
【问题讨论】:
-
尝试删除逗号周围的空格:
...olsrd_.*/,/}/ -
哦,太好了,成功了!谢谢!我从另一个问题中举了这个例子,并且 OP 添加了空格以提高可读性,我出于完全相同的原因将其留在那里......
标签: awk sed range substitution busybox