Regex 如何在bash中将文本替换为占位符和变量中的值?

Regex 如何在bash中将文本替换为占位符和变量中的值?,regex,bash,shell,Regex,Bash,Shell,我有两个变量。一种是带有占位符的文本,例如&a或&B。另一个包含应插入文本中的变量&a说它是第一个单词,&b说它是第二个单词。在文本中,它们可能是随机排列的。分隔符是一个空格。我怎么能在bash中这样做 例如: TEXT="Once &B a &a" VAR="time upon" # Result should be "Once upon a time" 您至少需要使用以下两个命令: 剪切(拆分“VAR”变量) sed(替换您的代币) 您至少需要使用以下两个命令: 剪切

我有两个变量。一种是带有占位符的文本,例如
&a
&B
。另一个包含应插入文本中的变量
&a
说它是第一个单词,
&b
说它是第二个单词。在文本中,它们可能是随机排列的。分隔符是一个空格。我怎么能在bash中这样做

例如:

TEXT="Once &B a &a"
VAR="time upon"

# Result should be "Once upon a time"

您至少需要使用以下两个命令:

  • 剪切(拆分“VAR”变量)
  • sed(替换您的代币)

您至少需要使用以下两个命令:

  • 剪切(拆分“VAR”变量)
  • sed(替换您的代币)

    • 纯bash-无需外部命令:

      VAR="time upon"
      TEXT="Once &b a &a"
      set -- $VAR
      temp=${TEXT//&a/$1}
      TEXT=${temp//&b/$2}
      echo ==$TEXT==
      

      纯bash-无需外部命令:

      VAR="time upon"
      TEXT="Once &b a &a"
      set -- $VAR
      temp=${TEXT//&a/$1}
      TEXT=${temp//&b/$2}
      echo ==$TEXT==
      

      谢谢,这很有魅力。很抱歉,我没有说最多可能有26个占位符(a-z),有时变量不如占位符多。例如TEXT=“Once&b a&c there&a peace&d&e&f”;VAR=“was on time”谢谢,这很有魅力。很抱歉,我没有说最多可能有26个占位符(a-z),有时变量不如占位符多。例如TEXT=“Once&b a&c there&a peace&d&e&f”;VAR=“was on time”这没有帮助-应该如何使用这些命令?请添加一个示例和说明。暂时被否决。现在你有了好的关键词(sed和cut),你可以在谷歌上复制/粘贴它们,不是吗?在你拥有它们之前,你不能,所以我确实认为它有帮助。所以这不是一个给别人做作业的地方。这没有帮助-人们应该如何使用这些命令?请添加一个示例和说明。暂时被否决。现在你有了好的关键词(sed和cut),你可以在谷歌上复制/粘贴它们,不是吗?在你拥有它们之前,你不能,所以我确实认为它有帮助。所以这里不是给别人做作业的地方。