我想从 tcl 脚本执行 awk 命令

aac*_*raf 2 awk tcl

我想从我的 tcl 脚本中执行以下命令

exec /bin/awk '/Start/{f=1;++file}/END/{f=0}f{print > "/home/user/report/"file }' input
Run Code Online (Sandbox Code Playgroud)

我收到这个错误

awk: ^ invalid char ''' in expression
Run Code Online (Sandbox Code Playgroud)

是否可以从 tcl 执行这样的命令

谢谢

Ten*_*bai 5

来自 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
Run Code Online (Sandbox Code Playgroud)