O comando Unix não funciona no script Tcl

1

Eu sou novo na programação Tcl e UNIX.

O seguinte comando funciona nas linhas de comando do UNIX, mas não funciona em um script Tcl.

$ sort -b -k8  abc.txt | awk '!a[$1]++'
error out for 8 (-k8) and 1($1) is not variable

Estou tentando classificar na Coluna 8 primeiro e e escolher apenas dados exclusivos na coluna 1.

Eu também estou tentando salvar dados em um arquivo.

    
por user120451 22.06.2015 / 16:15

2 respostas

2

Acho que você precisa escapar de [] e $ na string, por exemplo:

send_unix_cmd "sort -k$sort_col top_$host | awk '!a\[\$$uni_col\]++' "

Eu também removi o {} .

    
por 22.06.2015 / 17:47
1

Eu acho que para executar o comando no script Tcl você deve usar exec . E aspas simples não têm um significado especial no script Tcl , portanto, ele tentará expandir a variável $1 . Você pode tentar seguir:

exec sort -b -k8  abc.txt | awk {!a[$1]++} > output

Se você não redirecionar a saída padrão do programa, ele se tornará o valor de retorno do comando exec , para que você possa capturá-lo, por exemplo:

set result [exec sort -b -k8  abc.txt | awk {!a[$1]++}]
    
por 22.06.2015 / 17:09

Tags