我想在TCL脚本中打印文件中的特定列号字段。
我尝试使用exec awk '{print $4}' foo
,其中foo是文件名,但它不起作用,因为它给出了错误
can't read "4": no such variable
如何在tcl脚本中使用awk?
谢谢,
答案 0 :(得分:14)
问题是单引号在Tcl中没有特殊含义,它们只是字符串中的普通字符。因此,$4
不会从Tcl隐藏,它会尝试扩展变量。
与shell单引号相当的Tcl是大括号。这就是你需要的:
exec awk {{print $4}} foo
双括号看起来很有趣,但是外部对用于Tcl而内部对用于awk。
顺便说一下,awk程序的Tcl翻译是:
set fid [open foo r]
while {[gets $fid line] != -1} {
set fields [regexp -all -inline {\S+} $line]
puts [lindex $fields 3]
}
close $fid