Вывести последнюю визуально непустую строку:
tac my_file.txt | grep -vm 1 '^[[:space:]]*$'
или
awk 'BEGIN{RS="\r?\n[[:space:]]*"}END{print}' my_file.txt
Возможно, \r?
необходим для текстовых файлов DOS / Windows.
Классы символов, такие как [:space:]
, работают с GNU-версиями awk
(т.е. gawk
) и grep
как минимум. В некоторых других реализациях вы должны перечислять пробельные символы вручную в коде, то есть заменить [:space:]
на \t \n\f\r\v
. Я не знаю, как правильно обращаться с символами возврата (\b
) в файле.
Следующее работает только с [:space:]
:
tac my_file.txt | grep -m 1 '[^[:space:]]'