Tengo un código antiguo de 2003 que usa la -t
opción de uniq
comando. Lanza un error ya que esa opción probablemente ya no sea compatible.
Aquí está la pieza que usa el 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
¿Qué hizo esa opción en ese entonces? ¿Con qué puedo sustituir ese comando?
man uniq
,-f 1
evita comparar el primer campo. Supongo-t ':'
que-t
se supone que eso cambiará el separador de campo de espacios en blanco a:
.-t
fue una opción específica de Debian que luego se eliminó?uniq
no tenía lo mismo-t
y-k
como sort o por qué sort no tenía todas las características deuniq
incorporado (ya que ahora tiene-u
). Esos-w
/-f
/-s
de GNU uniq no tienen sentido. ¿Por qué no podrían usar la misma sintaxis quesort
.Respuestas:
La única referencia que pude encontrar
-t
es en este parche en una lista de correo GNU, que contiene entre otras pistas, esto:Esto aparentemente era una extensión de GNU pero ya no estaba en uso. Parece permitir seleccionar un carácter delimitador para campos que no sean espacios o pestañas. Intenta reemplazar
con
que reemplazará
:
con espacios que uniq reconoce el separador de campo.fuente
g
desed
, ya que solo se omite el primer campo. Se necesita al menos un colon para que funcione la última línea (con suerte no la primera). Sin embargo, todavía no hay garantía de que funcione (cualquiera de los primeros campos puede contener espacios en blanco)Dada la
man
entrada para la-f
opción:Creo que es bastante seguro suponer que
-t
especifica el separador de campo (este también es el casosort
en la línea anterior). La combinación de las dos opcionesuniq
solo haría funcionar la parte de la línea que sigue al primer colon.fuente