felix: Programm zum vergleichen von Zeilenanfängen in Dateien

Hi,

ich habe ein Problem und weiss nicht wie ich es lösen kann:

ich habe unter Linux eine Datei, die zeilenweise kommasepariert Einträge enthält.
Jetzt sollen alle Zeilen, die mit den gleichen Textmuster beginnen an der Konsole ausgegeben werden.

also so:

Datei:
Testmuster1, ashdg, weuhc, wefouhw
Testmuster2, eorg, regijh, ergojerg
Testmuster1, sdjhsd, sdjkh, sdjfhs
Testmuster3, sddsfhu, sdjfhs, ojhfso
Testmuster4, dshf, sdhfs, sdjf hks
Testmuster2, sdfhs, khf, ksf

Jetzt soll an der Konsole ungefähr folgendes stehen.

Gleiche Zeilenanfänge:
Testmuster1, ashdg, weuhc, wefouhw
Testmuster1, sdjhsd, sdjkh, sdjfhs
Testmuster2, eorg, regijh, ergojerg
Testmuster2, sdfhs, khf, ksf

kann mir jemand helfen oder einen tipp geheb?

gruß

felix

  1. ich habe unter Linux eine Datei, die zeilenweise kommasepariert Einträge enthält.
    Jetzt sollen alle Zeilen, die mit den gleichen Textmuster beginnen an der Konsole ausgegeben werden.

    Wenn das eine größere Datei ist, wäre das eine klassische Aufagbe für eine SQL Abfrage. Weil es hier keinen Trick oder sowas gibt, sondern du musst die komplette Datei einlesen und alles umsortieren

    also so:

    Datei:
    Testmuster1, ashdg, weuhc, wefouhw
    Testmuster2, eorg, regijh, ergojerg
    Testmuster1, sdjhsd, sdjkh, sdjfhs
    Testmuster3, sddsfhu, sdjfhs, ojhfso
    Testmuster4, dshf, sdhfs, sdjf hks
    Testmuster2, sdfhs, khf, ksf

    Jetzt soll an der Konsole ungefähr folgendes stehen.

    Gleiche Zeilenanfänge:
    Testmuster1, ashdg, weuhc, wefouhw
    Testmuster1, sdjhsd, sdjkh, sdjfhs
    Testmuster2, eorg, regijh, ergojerg
    Testmuster2, sdfhs, khf, ksf

    kann mir jemand helfen oder einen tipp geheb?

    einlesen, splitten und dann einen HASH bilden der den ersten Wert als Schlüssel hat und die Werte Arrays mit den Zeilen sind.

    Struppi.

    --
    Javascript ist toll (Perl auch!)
    1. hmm,

      die datei habe ich mittlerweise sortiert bekommen.

      d.h. jetzt stehen die doppelten zeilenanfänge untereinander.

      gibt es eine einfachere möglichkeit, als die datei in eine Datenbank einzulesen?
      es reicht mir ja wenn ich die doppelten ausgegeben bekomme.

      gruss

      felix

      1. Hey,
        sortiere die Datei einfach.

          
        sort datei > neuedatei  
        
        
        --
        水-金-地-火-木-土-天-海-冥
        1. hallo

          sortiere die Datei einfach.

          sort datei > neuedatei

            
          ich habe doch geschrieben sortiert ist die datei schon! es geht nun darum die doppelten zu finden
          
          1. ich habe doch geschrieben sortiert ist die datei schon! es geht nun darum die doppelten zu finden

            Schrieb ich doch schon, das sollte einfach mit einem HASH gehen.

            Struppi.

            --
            Javascript ist toll (Perl auch!)
          2. ich habe doch geschrieben sortiert ist die datei schon!

            Ach so, dann hab ich dich falsch aufgefasst, 'tschuldigung.

            es geht nun darum die doppelten zu finden

            Mit uniq.

              
            sort datei|uniq -c|sort -nr|grep -v "^      1 "  
            
            

            ^ sortiert Zeilen
                       ^ doppelte Zeilen werden zusammengefasst,
                         Anzahl der Vervielfachung wird vor die
                         Zeile geschrieben
                               ^ sortiert Zeilen numerisch
                                 rückwärts, d.h. viele Vielfache
                                 zuerst, einzelne zuletzt
                                        ^ zeige nicht die einzelnen
                                          Zeilen

            --
            水-金-地-火-木-土-天-海-冥