2014-04-28 81 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不区分大小写)。