Ответ 1
Вы можете использовать Awk:
awk '/./{line=$0} END{print line}' my_file.txt
Это решение имеет то преимущество, что используется только один инструмент.
Как получить последнюю непустую строку с помощью tail
в Bash shell?
Например, my_file.txt
выглядит следующим образом:
привет
Голя
Bonjour
(пустая строка)
(пустая строка)
Очевидно, если я сделаю tail -n 1 my_file.txt
, я получу пустую строку. В моем случае я хочу получить bonjour
. Как это сделать?
Вы можете использовать Awk:
awk '/./{line=$0} END{print line}' my_file.txt
Это решение имеет то преимущество, что используется только один инструмент.
Используйте tac, поэтому вам не нужно читать весь файл:
tac FILE |egrep -m 1 .
Как использовать grep
для фильтрации пустых строк?
$ cat rjh
1
2
3
$ grep "." rjh | tail -1
3
Вместо tac
вы можете использовать tail -r
, если он доступен.
tail -r | grep -m 1 '.'
если вы хотите опустить пробелы, т.е. пробелы/вкладки в конце строки, а не только пустые строки
awk 'NF{p=$0}END{print p}' file
Если tail -r
недоступен, и у вас нет egrep
, то будет выполнено следующее:
tac $FILE | grep -m 1 '.'
Как вы можете видеть, это комбинация двух предыдущих ответов.