Läsa sista raden i en fil som saknar end of line före end of file

Om man läser in en fil rad för rad i ett bash-skript med hjälp av en loop enligt följande exempel

 while read line; do
 echo "$line"
 done < filename.txt
 

och filen avslutas utan ett nyradstecken så kommer inte den sista raden att behandlas. När kommandot read når end-of-file utan att först ha stött på end-of-line så avslutas det med en annan exitkod. Detta gör att loopens sista varv inte körs. Dock så finns värdet kvar i variablen $line så det går att nå det som ett specialfall.

Förslag på implementeringar som löser detta problem ges i följande referenser:

  1. http://stackoverflow.com/questions/4165135/how-to-use-while-read-to-read-the-last-line-in-a-file-if-theres-no-newline-at-t
  2. http://linux.derkeiler.com/Mailing-Lists/SuSE/2008-11/msg00237.html

Kommentera

Fyll i dina uppgifter nedan eller klicka på en ikon för att logga in:

WordPress.com Logo

Du kommenterar med ditt WordPress.com-konto. Logga ut / Ändra )

Twitter-bild

Du kommenterar med ditt Twitter-konto. Logga ut / Ändra )

Facebook-foto

Du kommenterar med ditt Facebook-konto. Logga ut / Ändra )

Google+ photo

Du kommenterar med ditt Google+-konto. Logga ut / Ändra )

Ansluter till %s