Warum kann uniq führende Zeichen ignorieren, aber keine Endzeichen? [geschlossen]


7

Das von POSIX angegebene Befehlszeilentooluniq dient zum "Melden oder Herausfiltern wiederholter Zeilen in einer Datei". Abgesehen von Anwendungsfällen, bei denen die vollständigen Zeilen zum Vergleich verwendet werden, gibt es zwei Optionen für den teilweisen Zeilenvergleich:

  • -f <number>die ersten <number>Felder zu ignorieren , und
  • -s <number>um die ersten <number>Zeichen zu ignorieren (beginnend nach ignorierten Feldern von -f).

Was ich nicht verstehe, ist, warum die Funktion nie hinzugefügt wurde, uniqum das Ignorieren aller <number> Felder außer den ersten zu ermöglichen .

Eine verbreitete Awk-Redewendung ist:

awk '!a[$1]++'

Hiermit werden nur die Zeilen gedruckt, die das erste auftretende Vorkommen ihres ersten Felds enthalten.

Dies schien mir immer der Funktion von sehr ähnlich zu sein uniq.

Natürlich überlappt es ist in Ordnung für Werkzeuge, aber gibt es einen historischen oder UNIX-Philosophie basierte Grund nicht die parallele Funktionalität zu umfassen -f, der nur die ersten ____ Felder in Erwägung?


Ich stimme dafür, diese Frage als nicht zum Thema gehörend zu schließen, weil sie eine Frage stellt, warum das Tool xyz so ist, wie es ist. - Als solche ist die Frage nicht zu beantworten, außer dass der Autor des Tools dies so entschieden hat und sich niemand die Mühe gemacht hat, es zu ändern.
Gegenmodus

Antworten:


4

Ich weiß nichts über die historischen oder UNIX-philosophischen Gründe (falls vorhanden), aber vor ein paar Jahren hat jemand eine Feature-Anfrage (und einen Patch) auf der coreutilsFehlerliste eingereicht , um diese Fähigkeit hinzuzufügen uniq. Es wurde schließlich abgelehnt:

rev | uniq -f | rev wurde als ausreichend erachtet

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.