2012-07-19 32 views
0

我想在TCL腳本中使用以下命令:使用的sed命令可變稱爲Tcl腳本來

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

對於我已經改變了這一命令如下:

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

它給了我正確的答案,但就位1134我想使用值爲1134的變量$ MIDLINE。我該怎麼做?請建議一些方法。

+0

問題是與[此答案](http://stackoverflow.com/a/11114250/1301972)相關的後續。 – 2012-07-23 03:03:30

回答

4

這是一個簡單的引用問題。您正在使用禁止變量替換的大括號。既然你想要變量替換,你需要使用別的東西。

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

注意,你必須把一個反斜槓的字面$的前面,否則TCL將嘗試替換這一點。

+0

非常感謝!它對我有用:) – 2012-07-19 14:48:01

+0

+1從技術上說,美元符號不一定要逃脫。變量替換僅在美元符號後面跟隨變量名稱,左括號或右括號時纔會發生 - http://tcl.tk/man/tcl8.5/TclCmd/Tcl.htm#M12 – 2012-07-19 18:24:49

+0

@ user1468315如果它爲您工作,通過點擊答案旁邊的複選標記將問題標記爲已解決。 – 2012-07-20 08:39:37