Подтвердить что ты не робот

Как получить последнюю непустую строку файла, используя хвост в Bash?

Как получить последнюю непустую строку с помощью tail в Bash shell?

Например, my_file.txt выглядит следующим образом:

привет
Голя
Bonjour
(пустая строка)
(пустая строка)

Очевидно, если я сделаю tail -n 1 my_file.txt, я получу пустую строку. В моем случае я хочу получить bonjour. Как это сделать?

4b9b3361

Ответ 1

Вы можете использовать Awk:

awk '/./{line=$0} END{print line}' my_file.txt

Это решение имеет то преимущество, что используется только один инструмент.

Ответ 2

Используйте tac, поэтому вам не нужно читать весь файл:

tac FILE |egrep -m 1 .

Ответ 3

Как использовать grep для фильтрации пустых строк?

$ cat rjh
1
2
3


$ grep "." rjh | tail -1
3

Ответ 4

Вместо tac вы можете использовать tail -r, если он доступен.

tail -r | grep -m 1 '.'

Ответ 5

если вы хотите опустить пробелы, т.е. пробелы/вкладки в конце строки, а не только пустые строки

awk 'NF{p=$0}END{print p}' file

Ответ 6

Если tail -r недоступен, и у вас нет egrep, то будет выполнено следующее:

tac $FILE | grep -m 1 '.'

Как вы можете видеть, это комбинация двух предыдущих ответов.