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