Linux Unterschiede zwischen aufeinanderfolgenden Zeilen

8

Ich muss die n -Zeile einer Datei durchlaufen und für jede i between 1 and n - 1 die Differenz line(n - 1) - line(n) .

Und hier ist die Quelldatei:

%Vor%

Diese /dev/vda... -Linien werden stündlich mit df -BM in cron.log -Datei protokolliert und die Differenz zwischen den Zeilen zeigt den stündlichen Festplattenverbrauch.

Die erwartete Ausgabe lautet also:

%Vor%

Ich brauche den Text zwischen ( und ) nicht, ich lege es hier nur zur Erklärung.

    
SYNCRo 12.03.2014, 10:29
quelle

1 Antwort

11

Ich bin mir nicht sicher, ob ich dich richtig verstanden habe, aber das folgende Skript awk sollte funktionieren:

%Vor%

Ausgabe:

%Vor%

Sie brauchen die anderen Programme in der Pipe nicht. Nur:

%Vor%

wird reichen. Die Regex beim Start der Skripte awk weist awk an, den folgenden Block nur auf Zeilen anzuwenden, die dem Muster entsprechen. Ein Nebeneffekt ist, dass NR nicht mehr verwendet werden kann, um die "zweite Zeile" zu erkennen, in der die Berechnung beginnt. Ich habe zu diesem Zweck einen custome counter c eingeführt.

Beachten Sie auch, dass awk die M für sich selbst entfernt, weil die Spalte in einer numerischen Berechnung verwendet wurde.

    
hek2mgl 12.03.2014, 10:33
quelle

Tags und Links