我有这样的 sed 命令:
radius_clientsfile=clients.conf
iface_netsize="/64"
wireless_prefix=fd04:bd3:80e8:3::
sed -i "/client $wireless_prefix\\$iface_netsize/ {n s/\(\W*secret\W*=\W\).*/\1$key/}" $radius_clientsfile
clients.conf 的内容如下:
client fd04:bd3:80e8:3::/64 {
secret = 00000000000000000000000000000001
}
其目的是用clients.conf文件中的 key 替换secret的值。例如,如果key是00000000000000000000000000000002,则clients.conf的内容应更改如下:
client fd04:bd3:80e8:3::/64 {
secret = 00000000000000000000000000000002
}
此脚本适用于armv5tejl的OpenWRT姿态调整r35400 但是,它无法在 Ubuntu 9.04 中运行,并出现错误: sed:-e表达式#1,字符36:命令后的额外字符
有人可以帮助我解决这种情况吗?
最佳答案
我认为你需要在命令n
和命令s
之间添加一个;
,就像这样
sed -i "/client $wireless_prefix\\$iface_netsize/ {n; s/\(\W*secret\W*=\W\).*/\1$key/}" $radius_clientsfile
这在我的 cygwin 环境中工作。
关于Ubuntu 9.04 中 Sed 命令的正则表达式语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30227934/