我是 Tcl 和 UNIX 编程新手。
以下命令适用于 UNIX 命令行,但不适用于 Tcl 脚本。
$ sort -b -k8 abc.txt | awk '!a[$1]++'
error out for 8 (-k8) and 1($1) is not variable
我正在尝试对第 8 列进行排序第一的和然后仅选择第 1 列上的唯一数据。
我还尝试将数据保存到文件中。
答案1
我认为你需要在字符串中转义[]
and ,例如:$
send_unix_cmd "sort -k$sort_col top_$host | awk '!a\[\$$uni_col\]++' "
我还删除了{}
.
答案2
我认为在Tcl
脚本中执行命令应该使用exec
.单引号在脚本中没有特殊含义Tcl
,因此它将尝试扩展变量$1
。您可以尝试以下操作:
exec sort -b -k8 abc.txt | awk {!a[$1]++} > output
如果您不重定向程序的标准输出,它将成为命令的返回值exec
,因此您可以捕获它,例如:
set result [exec sort -b -k8 abc.txt | awk {!a[$1]++}]