我正在尝试使用路由器设备中的/x27
用单引号替换一行文本,以重新配置wifi设置。
我使用的命令
sed -i 's/option ssid.*/option ssid \x27test\x27/g' /some/file
我在计算机上执行上述命令后的输出(ubuntu 18)
option ssid 'test123'
我在路由器上执行上述命令后的输出
option ssid x27test123x27
预期输出应为
option ssid 'test123'
所以我的代码在路由器上无法正常工作。如何使用/ x27做到这一点? 注意:我正在外壳脚本中执行此脚本,\ x27test \ x27实际上是\ x27 $ OPTARG \ x27
您可以找到我的完整代码here
答案 0 :(得分:0)
您可以在sed命令中使用双引号,然后在其中使用单引号:
sed -i "s/option ssid.*/option ssid 'test'/g" /some/file
答案 1 :(得分:0)
在评论中,您说您的真实代码是:
sed -i 's/option ssid.*/option ssid '"'"'"'$OPTARG'"'"'"'/g'
应该更准确,简洁地写成:
sed -i 's/\(option ssid\).*/\1 '"'$OPTARG'"'/g'
看:
$ echo 'hi option ssid question' | sed 's/\(option ssid\).*/\1 '"'$RANDOM'"'/'
hi option ssid '5203'
给出your feedback to a different answer,听起来您正在运行的sed版本需要在-i
和s/...
之间建立备份文件名。否则,shell脚本中较早的某个地方会出现错误,或者$OPTARG
包含正斜杠或反向引用。