我想从tcl脚本执行awk命令

时间:2015-01-23 12:12:43

标签: awk tcl

我想从我的tcl脚本

执行以下命令
exec /bin/awk '/Start/{f=1;++file}/END/{f=0}f{print > "/home/user/report/"file }' input

我收到此错误

awk: ^ invalid char ''' in expression

可以从tcl

执行这样的命令

由于

2 个答案:

答案 0 :(得分:4)

引自tcl手册页:

  

从Unix shell调用中翻译命令时,应该小心   接受单引号字符没有特殊的事实   对Tcl的意义。因此:

     

awk '{sum += $1} END {print sum}' numbers.list

     

会被翻译成:

     

exec awk {{sum += $1} END {print sum}} numbers.list

所以我会尝试没有引号(作为答案发布,因为它不能正确地放在评论中,它只是来自谷歌的快速搜索)

根据评论,您可以在var之前创建awk脚本,如:

set awk_command "/Start/{f=1;++file}/END/{f=0}f{print > \"$tcl_variable\"file }" 
exec /bin/awk $awk_command input

答案 1 :(得分:1)

这是我的解决方案:

puts [exec /usr/bin/awk \
           {/Start/{f=1;++file}END{f=0}f{print > file}} \
           invoke_awk.txt]

如果您不需要显示输出:

exec /usr/bin/awk \
     {/Start/{f=1;++file}END{f=0}f{print > file}} \
     invoke_awk.txt

请注意,在TCL中,您不要使用单引号进行分组,而是使用双引号或括号。