O que 'uniq -t' faz?

15

Eu tenho um código antigo de 2003 que usa a opção -t para o comando uniq . Isso gera um erro, pois provavelmente essa opção não é mais suportada.

Aqui está a parte que usa o comando:

egrep -n "{ IA32_OP" ia32-decode.c | \
    awk '{ print $1 $3 $4 }' | \
    sort -t '(' +1 | \
    uniq -t ':' -f 1 | \
    sed 's/\(.*\)\:IA32_OP(\(.*\)),/#define IA32_OP_ /g' >> ia32_opcodes.h

O que essa opção fez naquela época? O que posso substituir por esse comando?

    
por Babken Vardanyan 01.02.2014 / 15:00

2 respostas

13

A única referência que encontrei para -t está em este patch em uma lista de discussão GNU, que contém entre outras dicas, isto:

+  -t, --separator=S     use a character in string S as field separator\n\

Aparentemente, essa foi uma extensão do GNU, mas não está mais em uso. Parece permitir selecionar um caractere delimitador para campos diferentes de espaços ou tabulações. Tente substituir

uniq -t ':' -f 1 | \

com

sed 's/:/ /' | \
uniq -f 1 | \

que substituirá : por espaços que uniq reconheça o separador de campos.

    
por 01.02.2014 / 15:38
4

Dada a entrada man da opção -f :

-f, --skip-fields=N

         avoid comparing the first N fields

Eu acho que é bastante seguro assumir que -t especifica o separador de campo (esse também é o caso de sort na linha acima). A combinação das duas opções faria com que uniq operasse apenas na parte da linha após o primeiro cólon.

    
por 01.02.2014 / 15:30

Tags