После просмотра файла с помощью инструмента шестнадцатеричного дампа, похоже, что в конце файла нет новой строки.Интересно, что gnu coreutils справляется с этим, а bsd coreutils (входит в состав MacOS) - нет.Более подробную информацию можно найти в этом сообщении об обмене стеками.
Утилиты, которые должны работать с текстовыми файлами, могут плохо работать с файлами, которые не заканчиваются символом новой строки;например, исторические утилиты Unix могут игнорировать текст после последней новой строки.Утилиты GNU придерживаются политики приличного поведения с нетекстовыми файлами, как и большинство других современных утилит, но вы все равно можете столкнуться со странным поведением с файлами, в которых отсутствует последняя новая строка¹.
$ hexdump file-with-2-lines.txt
0000000 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61
*
0001820 61 61 61 61 61 61 61 61 61 61 61 61 0a 62 62 62
0001830 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62
*
0003000 62
0003001
После редактирования файла (без внесения изменений, просто с помощью редактора, который вводит новые строки в конце файла).
$ hexdump file-with-2-lines.txt
0000000 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61
*
0001820 61 61 61 61 61 61 61 61 61 61 61 61 0a 62 62 62
0001830 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62
*
0003000 62 0a
0003002
0a
- символ новой строки.