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

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

Например, my_file.txt похож на это:

здравствуйте!
оклик
добрый день
(пустая строка)
(пустая строка)

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

34
задан Debugger 5 September 2013 в 12:46
поделиться

4 ответа

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

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

Преимущество этого решения заключается в использовании только одного инструмента.

26
ответ дан 27 November 2019 в 16:13
поделиться

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

awk 'NF{p=$0}END{print p}' file
3
ответ дан 27 November 2019 в 16:13
поделиться

Как насчет использования grep , чтобы сначала отфильтровать пустые строки?

$ cat rjh
1
2
3


$ grep "." rjh | tail -1
3
23
ответ дан 27 November 2019 в 16:13
поделиться

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

tac FILE |egrep -m 1 .
33
ответ дан 27 November 2019 в 16:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: