awk Lösung zum Vergleichen der aktuellen Zeile mit der nächsten Zeile und zum Drucken einer der Zeilen basierend auf einer Bedingung

8

Ich habe eine Eingabedatei, die so aussieht (die erste Spalte ist eine Ortsnummer und die zweite eine Anzahl, die mit der Zeit zunehmen sollte):

%Vor%

und ich möchte es so einstellen (Ersatzzählungen, die mit der vorherigen Zählung abnahmen):

%Vor%

Ich habe versucht, awk dafür zu verwenden, stolpere aber mit getline, da ich nicht herausfinden kann, wie man die Zeilennummer (NR?) zurücksetzt, so dass es jede Zeile und ihre nächste Zeile liest, nicht zwei Zeilen gleichzeitig. Das ist der Code, den ich bisher habe, irgendwelche Ideen?

%Vor%

Auch das ist die Ausgabe, die ich gerade bekomme:

%Vor%     
suegene 28.07.2012, 21:37
quelle

2 Antworten

7

Vielleicht ist alles was du willst:

%Vor%

Dies wird in der ersten Zeile fehlschlagen, wenn der Wert in der zweiten Spalte negativ ist, also:

%Vor%

Dies setzt die zweite Spalte einfach auf den vorherigen Wert, wenn der aktuelle Wert kleiner ist, speichert dann den aktuellen Wert in der Variablen p und druckt dann die Zeile.

Beachten Sie, dass dadurch auch der Abstand der Ausgabe zu Zeilen, die sich ändern, geringfügig geändert wird. Wenn Ihre Eingabe durch Tabulatorzeichen getrennt ist, sollten Sie Folgendes tun:

%Vor%     
William Pursell 28.07.2012, 21:43
quelle
2

Dieses Skript wird tun, was Sie wollen:

%Vor%

Dies ist eine ausführliche Version, um leicht lesbar zu sein:)

    
Levon 28.07.2012 21:47
quelle

Tags und Links