【问题标题】:Using a Variable in a sed command called in Tcl Script在 Tcl 脚本中调用的 sed 命令中使用变量
【发布时间】:2012-07-19 14:35:12
【问题描述】:

我想在 tcl 脚本中使用以下命令:

sed -n '452,$ { /wire/ {p;q} }' /tmp/foo

为此,我已将此命令更改如下:

set MIDLINE2 [ exec sed -n {1134,$ {/wire/{=;q}}} foo.txt ] 

它给了我正确的答案,但在 1134 处,我想使用值为 1134 的变量 $MIDLINE。我该怎么做?请提出一些方法。

【问题讨论】:

标签: tcl


【解决方案1】:

这是一个简单的引用问题。您正在使用抑制变量替换的花括号。由于您想要变量替换,因此您需要使用其他东西。

set MIDLINE2 [ exec sed -n "$MIDLINE,\$ {/wire/{=;q}}" foo.txt ]

请注意,您必须在文字 $ 前面加上一个反斜杠,否则 Tcl 也会尝试替换它。

【讨论】:

  • +1 从技术上讲,美元符号不必转义。仅当美元符号后跟变量名、左括号或左大括号时才会发生变量替换 -- tcl.tk/man/tcl8.5/TclCmd/Tcl.htm#M12
  • @user1468315 如果它对您有用,请通过单击答案旁边的复选标记将问题标记为已解决。
猜你喜欢
  • 1970-01-01
  • 2019-09-11
  • 2012-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-08
  • 2017-07-10
相关资源
最近更新 更多