Ubuntu 9.04 中 Sed 命令的正则表达式语法错误

标签 regex linux bash ubuntu sed

我有这样的 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/

相关文章:

javascript - 使用正则表达式从 URL 检测器中排除 mySite

c# - 正则表达式中的重叠匹配

c - 尝试在 C、Linux 中递归打印所有小于特定大小的文件

bash - 将 ed25519 私钥转换为 RSA 私钥

bash - 没有这样的文件或目录 : Cannot execute but is visible to ls, file and tab-completion

Java String 与 REGEX 匹配错误

Python正则表达式查找不完整的左括号和右括号

python - Windows 和 Linux 之间的 WxPython 差异

linux - 在 Vala 中是否有某种等同于 .NET 的 BackgroundWorker 的东西?

linux - 如何删除shell中最后10个命令的历史记录?