Ich möchte jede Zeile aus einer großen Datei, wo die vorherigen 10 Zeilen einen bestimmten Wert in einer bestimmten Spalte haben, drucken (im Beispiel unten, Spalte 9 hat einen Wert < 1). Ich möchte nicht die gesamte Datei im Speicher ablegen. Ich versuche, awk zu diesem Zweck wie folgt zu verwenden:Drucken Sie jede Zeile aus einer großen Datei, wo die vorherigen N Zeilen bestimmte Kriterien erfüllen
awk 'BEGIN{FS=","}
{
for (i=FNR,i<FNR+10, i++) saved[++s] = $0 ; next
for (i=1,i<s, i++)
if ($9<1)
print saved[s]; delete saved; s=0
}' file.csv
Das Ziel dieses Befehls die 10 vorhergehenden Zeilen zu speichern ist, dass dann überprüfen Sie die Spalte 9 in jeder dieser Zeilen meine Kriterien erfüllt, dann wird der Druck aktuelle Zeile. Jede Hilfe mit diesem oder Vorschlag auf eine effizientere Weise, dies zu tun, wird sehr geschätzt!
Verwenden Sie 'für (..; ..; ..)' mit ** Semikolons ** anstelle von Kommas. –