【问题标题】:how to replace spaces inside doublequotes如何替换双引号内的空格
【发布时间】:2013-06-18 20:07:47
【问题描述】:

我需要替换变量中双引号内的每个空格:

VAR='"this is my problem" but not yours'

现在我必须用 '[[:space]]+' 替换“这是我的问题”中的空格(可能连续不止一个)。我的外壳是busybox。最简单的方法是什么?

谢谢。

【问题讨论】:

  • 查找sed 命令。
  • 我用 sed 尝试了几件事,但没有成功。
  • 您可以发布您尝试过的内容吗?
  • echo $var | sed 's|\s|[[:space:]]+|g'之类的东西
  • 你得到了什么?请编辑您的问题以包含所有这些信息。从最初的外观来看,该 sed 命令应该可以工作。

标签: replace spaces busybox


【解决方案1】:

试试这个:echo $var | sed -re 's|.*("[^"]*").*|\1|g' | sed -re 's|\s|[[:space:]]+|g'。第一个 sed 是多余的双引号部分,第二个 sed 是把双引号里面的空格变成 [[:space:]]+。

PS。如果您从一开始就将 cmets 中的所有内容放入原始问题中,您可能会节省两个小时 :)

【讨论】:

  • 谢谢。但它不起作用:[machine] /var # echo $var | sed 's|.*("[^"]").*|\1|g' | sed 's|\s|[[:space:]]+|g' "this[[:space:]]+is[[:space:]]+my[[:space:]]+problem"[[:space:]]+but[[:space:]]+not[[:space:]]+yours
  • 忘记在 [^"] 后加 *。现在已修复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-22
  • 2014-02-19
  • 1970-01-01
  • 2020-05-21
  • 1970-01-01
相关资源
最近更新 更多