【问题标题】:sed: unterminated 's' command`sed:未终止的's'命令`
【发布时间】:2016-07-29 11:49:12
【问题描述】:

我正在编写一个很好的正则表达式来替换文本文件中的一些 IP。

sed -r "s/[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/${APP_IP}/g" /path/to/my/file

但是它给了:sed: -e expression #1, char 49: unterminated 's' command

我需要双引号,否则它会用文字变量名替换所需的字符串:${APP_IP}

我错过了什么?

【问题讨论】:

  • 无法重现您的问题 - APP_IP 的值是多少?
  • 问题很可能是/、换行符或$APP_IP中存在的其他终止字符。
  • 您的代码对我来说运行良好 :)
  • 当我手动将变量设置为所需的 IP 时似乎正在工作。如果我从变量中捕获 IP,它将失败。必须是变量中的特殊字符。谢谢大家。

标签: regex bash sed git-bash


【解决方案1】:

已解决:当我将变量 $APP_IP 手动设置为被测 IP 时,似乎可以正常工作。如果我从(ping 的)输出中捕获变量,它会给出错误。必须是变量中的特殊字符。谢谢大家。

【讨论】:

  • 输出是否包含换行符?
  • 是的,我用 APP_IP=$(echo $APP_IP | tr -d '\n') 把它取出来了 :)
  • 你可以只做 APP_IP=$(echo -n "$APP_IP")
猜你喜欢
  • 1970-01-01
  • 2019-05-04
  • 2013-06-11
  • 2012-05-05
  • 2012-07-10
  • 2013-11-27
  • 2018-05-29
  • 1970-01-01
  • 2015-09-25
相关资源
最近更新 更多