Anzeige:
Ergebnis 1 bis 7 von 7

Thema: gleiche strings aus einer var entfernen

  1. #1
    Registrierter Benutzer
    Registriert seit
    23.07.2008
    Beiträge
    18

    gleiche strings aus einer var entfernen

    in einer variablen sind verschiedne strings abgelegt. (wurde gefuellt mit awk)
    dabei kann es vorkommen dass einige identische sind.

    wie koennen identische mehrfach vorhandene variablen am besten entfernt werden? (habe in man awk keine moeglichkeit gefunden dass dieser identische strings ignoriert - waere ja auch eine moeglichkeit)

    danke

  2. #2
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665
    Eine Variable in Bash? Ist das ein Array oder wie sind da mehrere Strings drin?
    Vllt. hilft dir "sort --unique". Damit kannst du doppelte Zeilen entfernen.

  3. #3
    Registrierter Benutzer
    Registriert seit
    07.05.2007
    Beiträge
    656
    Moin,

    kannst Du mal ein Beispiel bringen, wie die Variable aussieht, welche identischen Strings Du raushaben willst und mit welchem awk Du sie gefüllt hast? Eine Lösung hängt sehr stark davon ab, ob z. B. Trennzeichen dazwischen liegen, ob und wie man die Doubletten identifizieren kann ...

    Jan

    P.S.: Du kannst im awk natürlich prüfen, ob eine Zeichenkette bereits vorhanden ist - z. B. mit index.

  4. #4
    Registrierter Benutzer
    Registriert seit
    23.07.2008
    Beiträge
    18
    ok sorry leute fuer die unverstaendl. ausrucksart.
    versuche es anhand eines bsp klar zu machen

    bin.inc sieht so aus:

    path/xy bin
    path/xyz bin
    path/xz bin
    path/xz sbin
    path/xz usr/bin
    ....

    Code:
    BINS=`cat bin.inc | awk {'print $2'}`
    Nun steht in BINS: bin bin bin bin sbin usr/bin
    Und alle mehrfach vorkmmenden strings sollten entfernt oder erst gar nicht reingeschrieben werden.

  5. #5
    Registrierter Benutzer Avatar von ContainerDriver
    Registriert seit
    10.01.2003
    Beiträge
    418
    Wenn die Reihenfolge egal ist, dann schalte so wie BLUESCREEN3D erwähnt hat ein sort -u zwischen cat und awk, bzw. ersetze das cat durch sort -u (warum erzählt dir jan61 ). Vielleicht kannst du mit dem Schalter -m bei sort verhindern, dass die Strings sortiert werden, falls die Reihenfolge wichtig ist.
    Ein gebrechlich Wesen ist der X-Server.

  6. #6
    Registrierter Benutzer
    Registriert seit
    23.07.2008
    Beiträge
    18
    sort -u wirkt wunder! danke euch.

  7. #7
    Registrierter Benutzer
    Registriert seit
    07.05.2007
    Beiträge
    656
    Moin,

    Zitat Zitat von codefritz Beitrag anzeigen
    sort -u wirkt wunder! danke euch.
    Warum nimmst Du für so eine simple Geschichte das Funktionsmonster awk? Da reicht auch ein cut:
    Code:
    cut -f2 -d" " bin.inc | sort -u
    Die -d-Option kannst Du weglassen, wenn die Felder nicht durch Leerzeichen, sondern durch Tabs getrennt sind.

    Jan

    P.S.: Ach ja - der cat ;-) "Useless use of cat award". awk kann wie die meisten Unix-Kommandos Dateinamen als Argument entgegennehmen, ein cat vorneweg ist schlicht und einfach überflüssig, braucht einen zusätzlichen Prozess und baut eine Subshell (in der bash durch die Pipe verursacht) auf.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •