2014-04-28 115 views
0

運行管道unix命令我試圖運行以下命令:Tcl腳本

exec tail CRON_GBOI_INC_AVG_COMPRESS_20140425_18* | grep -i "status of" | awk -F" " '{ print $NF }' 

它所做的是它尾部的文件,grep包含文本status of行了,它會返回一個字符串然後返回字符串中的最後一個字符。而在編譯行

missing close-bracket or close-brace

然而,TCL始終引發以下錯誤。

如何更改代碼以完成我需要實現的功能? Tcl有沒有可能?

回答

1

Tcl的語法不是shell的語法。該行的轉換將是:

exec tail {*}[glob CRON_GBOI_INC_AVG_COMPRESS_20140425_18*] | \ 
     grep -i "status of" | awk "-F " {{ print $NF }} 

這就是說,文件名匹配是明確的,雙引號是圓整的話,單引號改爲括號。 (它也打破了2線,爲清楚起見反斜線行序列。)

+0

不幸的是,這不適合我。這是錯誤消息,我在編譯「exec tail {*} [glob CRON_GBOI_INC_AVG_COMPRESS_20140425_18 *] | grep -i」| awk -F「」{{print $ NF}}時關閉大括號後出現了額外字符。 。「'我也嘗試過'awk'-F」'的語法,這也不起作用。 ' – czchlong

0

先生們, 碰巧,TCL字符串處理可以使這更容易: -

set stringBack [exec tail [lindex $argv 0] | grep -i "[lindex $argv 1]" ] 
set wanted [string index $stringBack end] 
puts "stat chr is $wanted" 

我們經營的,比方說,

./charget /path/to/file 'text hook we choose' 

與文件和文本鉤作爲參數(引用文本鉤串切換到grep不區分大小寫)。