sed - 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 -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 版本需要在-i
和s/...
. 否则,您的 shell 脚本中较早的某个地方会出现错误,或者$OPTARG
包含正斜杠或反向引用。
推荐阅读
- python - .[dev] 在 pip install -e .[dev] 中是什么意思
- css - 如何使用 SCSS 定位具有两个类的元素的后面?
- json - 如何对 HTTP POST 的“正文”进行 CFDUMP
- javascript - 如何使用 vue 将 vue-json-to-csv
- javascript - 为什么我不能直接将 Javascript 变量传递给 bean 方法?
- c# - Azure Blob 存储将元数据从上传传递到 Blob 触发器
- puppet - 在不同行中带有双引号的 Puppet heredoc
- javascript - 更改主 SVG 图像中的小元素 (SVG)
- php - yii2 gridview过滤日期
- angular - Angular 5:如何在两个具有相同数据的下拉列表上设置验证?