Wie zu erkennen, die Letzte Zeile in awk vor ENDE

Ich versuche, fügen Sie die Letzte Zeile in die Datei, die ich erschaffe. Wie ist es möglich, zu erkennen, die Letzte Zeile einer Datei in awk, bevor END ? Ich muss dies tun, da die Variablen nicht die Arbeit in der END block,
so versuche ich zu vermeiden, mit END.

awk ' { do some things..; add a new last line into file;}'

bevor END, das will ich nicht:

awk 'END{print "something new" >> "newfile.txt"}'
  • Die Variablen insbesondere brauchen Sie nicht verfügbar sind in der END-block? Die meisten der Variablen ( NR , NF, FNR usw. ) haben sehr günstigen Werten in der END-block.
  • die Variablen, die ich brauchen, sind einige lokale Variablen, die spielen die zentrale Rolle bei der Schaffung der Datei.. wie z.B.: print $0 >> sprintf("%s/%s_%s.txt", user, mode, FILENAME) diese user und mode sind nicht verfügbar in END werden, die immer den Namen der Datei...
  • Diese Frage macht keinen Sinn. Awk nicht über lokale Variablen, die anderen als Parameter der Funktion. Wenn Sie ermitteln einen Dateinamen und legen Sie es in fname, dann fname behält seinen Wert solange, bis entweder Awk beendet wird, oder ein neuer Wert zugewiesen wird, in fname.
  • Wenn Sie die Verarbeitung der Aufzeichnung der Eingangs -, davon ausgehen, dass es könnte der Letzte sein, und berechnen Sie den Namen der Datei, die erforderlich sein wird, in diesem Fall, steckte es in eine variable namens fname. Wenn es zu diesem Datensatz ist der Letzte, dann der END - block wird ausgeführt, und fname verfügbar sein wird dann.
InformationsquelleAutor doniyor | 2012-08-27
Schreibe einen Kommentar