Zeilen gleichen Inhalts durchnummerieren - AWK? SED?

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von Jonz, 26.01.2012.

  1. Jonz

    Jonz Grünschnabel

    Dabei seit:
    26.01.2012
    Beiträge:
    5
    Zustimmungen:
    0
    Hi,

    ich habe eine Datei, in der sich die einzelnen Zeilen unterschiedlich oft wiederholen, z.B.

    10
    10
    23
    23
    23
    23
    45
    45
    45

    Ich möchte nun in einer neuen Spalte die gleichen Zeilen folgendermaßen durchnummerieren:

    10 1
    10 2
    23 1
    23 2
    23 3
    23 4
    45 1
    45 2
    45 3

    Weiß jemand, wie sich das mit einfachen Shell-Kommandos wie AWK oder SED realisieren lässt?

    Danke & beste Grüße,
    Jonz
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. marce

    marce Kaiser

    Dabei seit:
    01.08.2007
    Beiträge:
    1.053
    Zustimmungen:
    8
    Schleife über sort -u, aktueller Schleifenwert grep -c auf Originaldatei.
     
  4. Jonz

    Jonz Grünschnabel

    Dabei seit:
    26.01.2012
    Beiträge:
    5
    Zustimmungen:
    0
    Danke, klingt gut und einfach. Versteh's nur noch nicht so ganz. Hab sort -u ausprobiert und erhalte eine Datei, in der identische Zeilen auf eine einzige Zeile reduziert werden. Ich seh nur noch nicht, inwiefern mir das weiterhilft. Wie ist das mit der Schleife gemeint?
     
  5. marce

    marce Kaiser

    Dabei seit:
    01.08.2007
    Beiträge:
    1.053
    Zustimmungen:
    8
    Pseudocode:
    Code:
    gehe über unique-Sort von $datei als $element
    mache
      zähle anzahl von $element in $datei
      gib aus $element und $anzahl
    ehcma
     
  6. Jonz

    Jonz Grünschnabel

    Dabei seit:
    26.01.2012
    Beiträge:
    5
    Zustimmungen:
    0
    Hm, ich gehe als Element über etwas, was der unique-Sort meiner Datei ist? Ähhm, ja, alles klar... Ok, vielleicht sollte ich meine Frage anders formulieren: Wie spreche ich in einer Datei zwei aufeinanderfolgende Zeilen an, um diese im Anschluss zu vergleichen? Das Konzept des erforderlichen Codes ist mir klar, ich könnte mir einen Matlab Code vorstellen, der mein Problem löst, der sähe in etwa so aus:

    load input
    output=zeros(length(input));
    output(1)=1;

    count=1;

    for i=2:length(input)
    if input(i-1)==input(i)
    count=count+1;
    else
    count=1;
    end
    output(i)=count
    end

    Ich hätte nur lieber eine Lösung für die shell, damit sich das Ganze automatisch vom Skript aus starten lässt.
     
  7. marce

    marce Kaiser

    Dabei seit:
    01.08.2007
    Beiträge:
    1.053
    Zustimmungen:
    8
    Nein, tust Du nicht. Du gehst mit den Unique-Elementen über die Usprungsdatei.

    öhm, das ist aber ein komplett andere Aufgabenstellung als im Eröffnungsposting...

    Wobei ich beim nochmals genauen nachschauen das glaube ich am Anfang falsch verstanden habe...
     
  8. Jonz

    Jonz Grünschnabel

    Dabei seit:
    26.01.2012
    Beiträge:
    5
    Zustimmungen:
    0
    Kein Problem, trotzdem danke - ich werd's mal mit 'nem C-Programm versuchen.
     
  9. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  10. #8 Spröde, 26.01.2012
    Spröde

    Spröde Alter Sack

    Dabei seit:
    22.01.2012
    Beiträge:
    173
    Zustimmungen:
    0
    Code:
    #!/bin/bash
    count=1
    line2=""
    while read line; do
      if [ "$line" = "$line2" ]; then
        ((count++))
      else
        count=1
      fi
      echo "$line $count"
      line2="$line"
    done <DEINEDATEI
    
     
  11. Jonz

    Jonz Grünschnabel

    Dabei seit:
    26.01.2012
    Beiträge:
    5
    Zustimmungen:
    0
    Genial, läuft perfekt & super einfache Lösung - genau das, was ich wollte! Mille Grazie!!
     
Thema: Zeilen gleichen Inhalts durchnummerieren - AWK? SED?
Besucher kamen mit folgenden Suchen
  1. awk spalte zeile readline

Die Seite wird geladen...

Zeilen gleichen Inhalts durchnummerieren - AWK? SED? - Ähnliche Themen

  1. awk: Bestimmte Spalten in zwei Zeilen vergleichen

    awk: Bestimmte Spalten in zwei Zeilen vergleichen: Moin zusammen! Ich hab ein (glaube ich) ziemlich einfaches Problem mit awk: Wie vergleiche ich, in einer Datei, ein Feld einer Zeile mit exakt...
  2. Art-preisliste: zeilen mit gleichen Preisen aber diff. wert in best. spalte entfernen

    Art-preisliste: zeilen mit gleichen Preisen aber diff. wert in best. spalte entfernen: hallo, ich hab' da ein problem: folgende datei mit verschiedenen artikelpreisen muss "ausgemistet" werden: . . 1a,2b3c-4d...
  3. 2 Dateien zeilen-weise vergleichen

    2 Dateien zeilen-weise vergleichen: Hallo an Alle ich habe 2 Dateien, einmal ne Gesamtliste gliste und ne Neuliste nliste in beiden stehen Benutzernamen und zwar zeilenweise, so...
  4. 2 Zeilen aus einer txt auslesen

    2 Zeilen aus einer txt auslesen: Hallo Leute, ich habe eine Datei die immer aus zwei zusammenhängenden Zeilen besteht, als Beispiel: DE0006231004 # 15,04 Infineon DE0005785604...
  5. Zeichen an Zeilenanfang für bestimmten Zeilenbereich einfügen

    Zeichen an Zeilenanfang für bestimmten Zeilenbereich einfügen: Hallo, ich würde gerne in einem Textdokument, z.B. von Zeile 10 - 18, an den Zeilenanfang ein # einfügen. Habe mir schon diverse Seiten zu SED...