我想从我的tcl脚本
执行以下命令exec /bin/awk '/Start/{f=1;++file}/END/{f=0}f{print > "/home/user/report/"file }' input
我收到此错误
awk: ^ invalid char ''' in expression
可以从tcl
执行这样的命令由于
答案 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中,您不要使用单引号进行分组,而是使用双引号或括号。