Это сработало с образцом файла
sort -gk 2,2 file.txt | tail -n2
446 16480
386 16501,5
Что касается определения top %5, то для этого требуется дополнительная логика. Здесь берется количество новых строк в файле и умножается на .05, с масштабом 0 для устранения десятичных дробей.
sort -gk 2,2 file | tail -n$(bc <<<"scale=0; ($(wc -l < file)*.05)/1" | cut -d\. -f1)
446 16480
386 16501,5
Но вот Windows!
Windows не имеет к этому никакого отношения. Вы можете воспроизвести то же самое точное поведение с локальным экземпляром (скажем) терминала GNOME, с соответствующим образом выбранной кодировкой терминала и соответствующим образом настроенным языковым стандартом для ls
, вообще без присутствия Windows ].
Единственное, что делает Windows, - это ясно показывает, что здесь происходит. Ваша программа Windows FTP берет байты в именах файлов и отображает их в виде соответствующих кодовых точек на кодовой странице 1252. Это однобайтовая кодировка, в которой почти все, что выше 0x1F - печатный глиф, сообщает нам, какие именно байты в ваших именах файлов. .
Ваше второе имя файла в основном неинформативно, но первое и третье говорят.
63
61
66
c3
a9
2d
32
2e
70
6e
67
- На кодовой странице 1252 это cafà © -2.png
. Это также кодировка UTF-8 café-2.png
. 63
61
66
e9
2e
70
6e
67
- В кодовой странице 1252 это café.png
. Однако это недопустимая кодировка UTF-8. e9
начинает неполную последовательность кодирования символов. Итак, что происходит, так это то, что вещи не с использованием кодовой страницы 1252, а те, которые используют UTF-8, а именно ваш сеанс SSH и ваш локальный эмулятор терминала, обрабатывают допустимый UTF-8 одинаково друг с другом, но обрабатывают недопустимый UTF-8 двумя разными способами:
é
, возвращается к кодовой странице 1252, когда обнаруживает недопустимую кодировку. Ваша основная проблема - это система, которая каким-то образом генерирует некоторые имена файлов, закодированные как UTF-8, и другие имена файлов, закодированные в кодовой странице 1252.