Это не совсем ответ на ваш вопрос; Я подозреваю, что причина медленной работы head
указана в ответе Джули Пеллетье : файл не содержит каких-либо (или многих) переводов строки, поэтому head
] нужно много его прочитать, чтобы найти строки для отображения. head
, конечно, не нужно читать весь файл, прежде чем что-либо делать, и он прекращает чтение, как только набирает требуемое количество строк.
Чтобы избежать замедления, связанного с переводом строки, или если вам не нужно видеть определенное количество строк, можно быстро просмотреть начало файла с помощью dd
; например, чтобы увидеть первые 100 байт огромного файла
:
dd if=hugefile bs=100 count=1
Другой вариант, приведенный в Почему GNU head / tail читает весь файл? , заключается в использовании ] -c
параметр для head
:
head -c 100 hugefile
Просто заставьте awk
сделать все за вас
awk '$20 ~ /GET/{gsub(/"/, "", $24); sub(/[^.]*\./, "", $24); a[$24]++};
END{for (k in a)print k, a[k]}' /var/log/nginx/error_log