Ich habe etwas alten Code von 2003, der -t
Wahl für uniq
Befehl verwendet. Es wird ein Fehler ausgegeben, da diese Option wahrscheinlich nicht mehr unterstützt wird.
Hier ist das Stück, das den Befehl verwendet:
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
Was hat diese Option damals getan? Womit kann ich diesen Befehl ersetzen?
man uniq
,-f 1
vermeidet das erste Feld zu vergleichen. Daraus würde ich schließen,-t ':'
dass-t
der Feldtrenner von Leerzeichen auf geändert werden soll:
.-t
eine Debian-spezifische Option, die später entfernt wurde?uniq
es nicht dasselbe gab-t
und-k
wie sort oder warum sort nicht alle Funktionen vonuniq
incorporated hatte (seitdem hat es jetzt-u
). Diejenigen-w
/-f
/-s
von GNU uniq keinen Sinn machen. Warum konnten sie nicht dieselbe Syntax verwenden wiesort
.Antworten:
Der einzige Hinweis, den ich finden konnte,
-t
ist in diesem Patch auf einer GNU-Mailingliste, die unter anderem folgende Hinweise enthält:Dies war anscheinend eine GNU-Erweiterung, wurde aber nicht mehr verwendet. Es scheint die Auswahl eines Begrenzungszeichens für andere Felder als Leerzeichen oder Tabulatoren zu ermöglichen. Versuchen Sie zu ersetzen
mit
das durch
:
Leerzeichen ersetzt wird, die das Feldtrennzeichen von uniq erkennen.quelle
g
aussed
, da nur das erste Feld übersprungen. Mindestens ein Doppelpunkt ist erforderlich, damit die letzte Zeile funktioniert (hoffentlich nicht die erste). Trotzdem keine Garantie, dass es funktioniert (eines der ersten Felder kann Leerzeichen enthalten)Angesichts des
man
Eintrags für die-f
Option:Ich denke, es ist ziemlich sicher anzunehmen, dass
-t
das Feld Trennzeichen angibt (dies ist auchsort
in der obigen Zeile der Fall ). Die Kombination der beiden Optionen bewirkt, dassuniq
nur der Teil der Zeile nach dem ersten Doppelpunkt bearbeitet wird.quelle