Eu tenho algum código antigo de 2003, que usa a -t
opção de uniq
comando. Ele gera um erro, já que essa opção provavelmente não é mais suportada.
Aqui está a peça 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_\2 \1/g' >> ia32_opcodes.h
O que essa opção fez naquela época? Com o que posso substituir esse comando?
man uniq
,-f 1
evita-se comparar o primeiro campo. Eu deduziria-t ':'
que isso-t
deveria mudar o separador de campo de espaços em branco para:
.-t
sido uma opção específica do Debian que foi removida posteriormente?uniq
que não tinha o mesmo-t
e-k
como classificar ou por que classificar não tinha todos os recursos douniq
incorporado (como agora tem-u
). Aqueles-w
/-f
/-s
do GNU uniq não fazem sentido. Por que eles não podiam usar a mesma sintaxe quesort
.Respostas:
A única referência que eu pude encontrar
-t
é neste patch em uma lista de discussão GNU, que contém, entre outras dicas, esta:Aparentemente, essa era uma extensão GNU, mas não estava mais em uso. Parece permitir a seleção de um caractere delimitante para outros campos que não sejam espaços ou tabulações. Tente substituir
com
que será substituído
:
por espaços que o uniq reconheça o separador de campos.fonte
g
fromsed
, já que apenas o primeiro campo é ignorado. É necessário pelo menos um cólon para que a última linha funcione (espero que não a primeira). Ainda não há garantia de que vai funcionar embora (qualquer um dos primeiros campos podem conter espaços em branco)Dada a
man
entrada para a-f
opção:Eu acho que é bastante seguro supor que
-t
especifique o separador de campos (esse também é o casosort
na linha acima). A combinação das duas opções fariauniq
operar apenas na parte da linha após o primeiro dois pontos.fonte