J'ai un vieux code de 2003 qui utilise l' -t
option de uniq
commande. Il génère une erreur car cette option n'est probablement plus prise en charge.
Voici la pièce qui utilise la commande:
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'est-ce que cette option faisait à l'époque? Avec quoi puis-je remplacer cette commande?
man uniq
,-f 1
évite de comparer le premier champ. J'en déduirais-t ':'
que cela-t
est censé changer le séparateur de champ des blancs en:
.-t
qu'une option spécifique à Debian a été supprimée plus tard?uniq
n'avait pas le même-t
et en-k
tant que tri ou pourquoi le tri n'avait pas toutes les fonctionnalités deuniq
incorporé (car il en a maintenant-u
). Ceux-w
/-f
/-s
de GNU uniq n'ont pas de sens. Pourquoi ne pourraient-ils pas utiliser la même syntaxe quesort
.Réponses:
La seule référence que j'ai pu trouver
-t
est dans ce correctif sur une liste de diffusion GNU, qui contient entre autres indices, ceci:Il s'agissait apparemment d'une extension GNU mais elle n'est plus utilisée. Il semble permettre de sélectionner un caractère de délimitation pour les champs autres que les espaces ou les tabulations. Essayez de remplacer
avec
qui remplacera
:
par des espaces qui uniq reconnaît le séparateur de champ.la source
g
fromsed
, car seul le premier champ est ignoré. Au moins un deux-points est nécessaire pour que la dernière ligne fonctionne (si tout va bien pas la première). Toujours aucune garantie que cela fonctionnera cependant (l'un des premiers champs peut contenir des espaces)Étant donné l'
man
entrée pour l'-f
option:Je pense qu'il est assez sûr de supposer que
-t
spécifie le séparateur de champ (c'est également le cassort
dans la ligne ci-dessus). La combinaison des deux options ne feraituniq
que fonctionner sur la partie de la ligne suivant le premier deux-points.la source