В качестве дополнительного примечания, если какое-либо из предложенных решений не работает. Убедитесь, что правила маршрутизации вашего маршрутизатора не мешают.
Я не совсем понимаю, почему вы хотите передать какие-либо переменные оболочки в awk
здесь.
tail "$(date +'%Y%m%d.txt')" |
awk '{ c[$1]++ } END { for (name in c) print name, c[name] }'
tail
по умолчанию извлекает последние 10 строк текста из заданного файла, поэтому-n 10
(или устаревший-10
)не нужен. Команда date
используется для создания имени файла для чтения.
Код awk
использует первый столбец в качестве ключа в ассоциативном массиве c
, который содержит количество просмотров каждого имени. Счетчик имени увеличивается для каждой строки, прочитанной из файла. В конце выводятся имена и соответствующие счетчики.
Обратите внимание, что здесь нет смысла использовать переменные оболочки.