Como executar o grep no tcl para obter o padrão do tipo XYZ-123

0

Como posso executar este comando grep no TCL?

grep '[A-Z][A-Z][A-Z]\-[0-9][0-9][0-9]' file1 > file2

    
por yogendra singh 29.05.2014 / 15:01

2 respostas

1

tcl usa chaves como aspas, em vez de marcas de aspas simples. Isso funcionaria:

grep {[A-Z][A-Z][A-Z]-[0-9][0-9][0-9]} file1 > file2

mas lembre-se de que, se não houver correspondência, ainda haverá um erro relatado, por exemplo,

child process exited abnormally
    while executing
"exec grep {[A-Z][A-Z][A-Z]-[0-9][0-9][0-9]} file1 > file2"
    (file "./foo" line 4)

Para que , a documentação do Tcl indica que você deve colocar seu comando em um bloco catch , por exemplo,

set status 0
if {[catch {exec grep {[A-Z][A-Z][A-Z]-[0-9][0-9][0-9]} file1 > file2} results options]} {
    set details [dict get $options -errorcode]
    if {[lindex $details 0] eq "CHILDSTATUS"} {
        set status [lindex $details 2]
    } else {
        puts "unexpected error $options $results"
        set status 99
    }
}

Leitura adicional:

  • tcl - Entendendo o uso de chaves
    Uma das respostas diz que chaves são análogas às ações de aspas simples e aspas duplas do shell, como aspas duplas do shell, mas não esclarecem que o último ato tcl e o uso de aspas duplas produzir um erro invalid command name "A-Z" .
por 30.08.2016 / 11:15
0

Você já tentou usar apenas exec ?

Ou seja:

exec grep "[A-Z][A-Z][A-Z]\-[0-9][0-9][0-9]" file1 > file2
    
por 30.08.2016 / 10:37