首页 > 解决方案 > Sed 添加 x27 而不是单引号

问题描述

我正在尝试/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 实现此目的?注意:我在 shell 脚本中执行这个脚本,\x27test\x27 实际上是 \x27$OPTARG\x27

你可以在这里找到我的完整代码

标签: sed

解决方案


在评论中你说你的真实代码是:

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'

鉴于您对不同答案的反馈,听起来您正在运行的 sed 版本需要在-is/.... 否则,您的 shell 脚本中较早的某个地方会出现错误,或者$OPTARG包含正斜杠或反向引用。


推荐阅读