uniq -w (uniq auf der Fritz!Box)

Tommyland78

Mitglied
Mitglied seit
9 Sep 2005
Beiträge
254
Punkte für Reaktionen
1
Punkte
16
Hallo!

Ich benötige auf meiner 7170 das uniq, welches auch das -w -Kommando versteht.
Auf meiner Busybox findet sich leider nur eins, welches eben dies nicht hat. Gibbet das Uniq einzeln für die F!Box-Plattform (mipsel)? Wenn ja könnt das mal bitte jemand in den Anhang basteln?

(Platz ist uninteressant...kommt ja aufm Stick)

THX

Der Tom
 
uniq is part of the textutils package... I don't know if that's in freetz. However I think ash understands
Code:
     ${parameter:offset}
     ${parameter:offset:length}
 
Mhhh das versteh ich jetzt so nicht ganz....
Steh grad aufm Schlauch...

Der Tom
 
Wenn Du erklären würdest, was genau Du mit dem uniq anstellen willst, können wir Dir vielleicht eine alternative Lösung anbieten. Das will offenbar auch johnbock, wobei ich nicht sicher bin, wie sein Vorschlag Dir helfen kann :-).
 
The idea was to cut everything after n bytes in a line as '-w' does and then let uniq do it's thing. But that won't work as I thought. As McNetic said it's probably best to explain what you wish to do...
 
Also ich habe ein Script, welches durch Cron mehrmals am Tag seinen Dienst verrichten soll/macht.
In diesem Script geht es um die Sortierung einer Textdatei und das löschen von doppelten Zeilen.
ABER: die Suche nach doppelten Einträgen müsste sich an eine bestimmte Regel halten.
Es sollten nur die ersten 28 Zeichen zur Erkennung von doppelten Zeilen genommen werden. Alles was danach noch in der Zeile steht soll nicht beachtet werden.

Es kann also vorkommen, dass eine Zeile 3 oder 4 oder mehrfach auftaucht...Das einzigste was dann unterschiedlich ist, ist alles nach dem 28 Zeichen...

PHP:
xxxx:xxxxxx:xxxxxxxxxx:xxxx:blablablaaaa
.....unterschiedliche Länge der "blaablaa"
Doppelte Zeilen sollten nur bis zur 28 Stelle...alles was dach kommt (hier mit "blaablaa" angegeben) ist mir egal.
Ach was evtl. noch gehen würde, wie zu sehen sind ":" mit in jeder Zeile vorhanden.
Vier : sind in jeder Zeile...alles nach dem 4 : ist dann also immer das, was mich bei der Erkennung von doppelten Zeilen nicht mehr interessiert.

Ich habs mal mehr oder minder doppelt gemoppelt....wollte nur sicher gehen, dass ich nicht missverstanden werde.

Ich dachte mir, dass uniq -w mein Problem am einfachsten löst.
Wenn es eine andere Lösung geben sollte, dann bin ich sicherlich dankbar dafür!


Der Tom
 
Zuletzt bearbeitet:
Ich glaube, -w ist wirklich der einfachste Weg, das zu erreichen.

Ich habe mal einen entsprechenden Feature Request + Patch im Busybox-Bugtracker eingepflegt, ich denke mal, das das früher oder später in der BB landen wird. In der Zwischenzeit kannst Du Dir selbst eine solche BB bauen, indem Du dir den Patch von dort holst: http://bugs.busybox.net/view.php?id=3094 und nach make/busybox/patches legst. Dann einmal make busybox-dirclean, und schon wird das beim nächsten Mal mit eingebaut.

Leider passt der Patch bei den Usage-Meldungen nicht zu unserer Busybox 1.9.2, aber das ist ja nicht so schlimm bzw. wenn Du das trotzdem haben willst, musst Du den Patch manuell anpassen.

Gruss, Nico
 
Würde denn die Usage-Meldung bei der als stabil geführten 1.10.1 richtig angezeigt werden?
Könnte der Patch auch unter der 1.10.1 eingepflegt werden?

Ach und erst mal vielen Dank!!!!
Ich werds heut abend mal einbauen....


Der Tom
 
Der Patch an sich wird wohl auch bei der 1.10.1 funktionieren, ob da die Usage-Message richtig gepatcht werden kann, weiss ich nicht.
 
Here the patch for bb 1.10.1
 

Anhänge

ich hab mal mit der 1.9.2 probieren wollen..schlug aber fehl der Spass

sieht dann so aus:
PHP:
applying patch file make/busybox/patches/busybox-uniq.patch
patching file coreutils/uniq.c
Hunk #2 succeeded at 31 with fuzz 1.
patching file include/usage.h
Hunk #1 FAILED at 4302.
Hunk #2 FAILED at 4312.
2 out of 2 hunks FAILED -- saving rejects to file include/usage.h.rej
patching file testsuite/uniq.tests
----------------------------------------------------------------------
ERROR: modpatch: Error in patch-file make/busybox/patches/busybox-uniq.patch
make: *** [source/ref-8mb_26/busybox-1.9.2/.unpacked] Fehler 2
slightly@StinkyLinux:~/freetz-trunk$

Hab ich was vergessen oder nur blöd angestellt?

Der Tom
 
Naja, mit cut sieht man dann halt den Rest der Zeile nicht mehr.

Bei mir lief make busybox-precompiled trotz des fehlgeschlagenen Patches (das ist eben die von mir erwähnte Usage-Meldung) durch. Vielleicht gehts mit dem Patch für die 1.10.1 von johnbock ja, oder Du musst eben manuell den Patch anpassen.
 
Nicht mit cat sortieren, sondern mut cut abschneiden.

Code:
cut -b 1-28 | uniq

Das ist ja dann blöd...den Rest brauch ich schon noch...will nur diesen Teil beim doppelten Zeilen löschen ignorieren...da wird das mit cat wohl nix...


@McNetic
Also das precompiled ging ja auch...nur das Image erstellen schlug dann fehl...Die Meldung entstand beim "make"

Ne Idee?

P.S. das Patch 1.10.1 hate das selbe Problem....


Der Tom
 
Wie gesagt, Du müsstest den Patch manuell anpassen. Wenn Du nicht weisst, wie, kannst Du auch alles ab der Zeile
Code:
Index: include/usage.h
inklusive aus dem Patch löschen. Dann ist halt die Usage-Meldung ungepatcht, aber das ist für die Funktion ja nicht von Belang.
 
hmmm, it worked perfectly for me: image build and execution.

Code:
for i in make/busybox/patches/*.patch; do \
		tools/freetz_patch source/ref-8mb_26/busybox-1.10.1 $i; \
	done
applying patch file make/busybox/patches/110-busybox-nolock-as-default.patch
patching file util-linux/mount.c
Hunk #1 succeeded at 1043 (offset 118 lines).
----------------------------------------------------------------------
applying patch file make/busybox/patches/120-busybox-shadow-path.patch
patching file include/shadow_.h
patching file libbb/messages.c
----------------------------------------------------------------------
applying patch file make/busybox/patches/130-trylink_bash.patch
patching file scripts/trylink
----------------------------------------------------------------------
applying patch file make/busybox/patches/200-fix_setconsole.patch
patching file console-tools/setconsole.c
----------------------------------------------------------------------
applying patch file make/busybox/patches/210-telnet-close-on-exit.patch
patching file networking/telnetd.c
patching file include/usage.h
----------------------------------------------------------------------
applying patch file make/busybox/patches/220-busybox-uniq.patch
patching file coreutils/uniq.c
patching file include/usage.h
patching file testsuite/uniq.tests
----------------------------------------------------------------------
touch source/ref-8mb_26/busybox-1.10.1/.unpacked
 
Sorry, my mistake. I have your patch with the 1.9.2. tested and not with the 10th ...

@McNetic
ich lösche also alles nach der Zeile
Index: include/usage.h
inclusive der selben....?

Ok...werd ich mal testen...Dann die 1.10.1 bauen und testen obs mit dem anderen Patch geht.
Eigentlich könnte man doch eine Auswahl im make menuconfig schaffen, dass man selbst die Version der Busybox wählen kann und diese gleich mit eingebaut wird. So muss man immer erst die Busybox selbst erstellen und ins Image einbauen...

Ne Frage zum Thema Patch...
Damit ich mal sowas selber schreiben kann.... Gibt es dafür einen generellen Aufbau? Also wie so ein Patch gestaltet sein müsste?
Das was ich wohl verstanden habe ist das mit
--
++

- steht wohl für "diese Zeile entfernen"
und + dafür diese einfügen....

Aber selbst da bin ich mir nicht sicher. Ich müsste mal ein Patch für die tfdi-Sache schreiben, da mir da einiges nicht gefällt...
Ich dachte mir, bevor ich die händisch bearbeite, kann ich ja mal nen Patch erstellen...ist ja fast die selbe Arbeit.

Der Tom
 
Kostenlos!

Neueste Beiträge

Statistik des Forums

Themen
248,876
Beiträge
2,303,712
Mitglieder
378,542
Neuestes Mitglied
viktor1181