Вывести количество обращений к каждому домену на awk
У меня есть задача вывести все домены 2-го уровня net. (с этим я разобрался). Но остановился на том, что мне нужно вывести ко-во обращений к этому домену и не знаю как это сделать. Пытаюсь разобраться с ассоциативным массивом awk, но пока что не даётся На данный момент у меня получается следующее:
BEGIN
{
/[a-z]\.net/{print tolower($15)} /home/user/lab1/dns-tunneling.log| sort
}
END
{print"END."}
В моём представлении массив получается так
BEGIN
{
myarr[NR]=$15
for(i in myarr)
{
if(myarr[i]==myarr[i+1])
count++
}
}
END
{
print "END"
}
или так
BEGIN
{
myarr[NR]=$15
for(i=1;i<=NF;i++)
{
if($i==$i+1)
count++
}
}
END
{
print "END"
}
Ответы (1 шт):
Автор решения: Alex
→ Ссылка
В общем у получилось следующее:
- Сохраняем все результаты сортировки по маске в файл (в моём случае я его назвал как script)
awk '[a-z]\.net/{print tolower($15)}' /home/user/lab1/dns-tunneling.log | sort >script
- Теперь полученные результаты берём из файла и проходимся массивом по ним
awk -v OFS='\t' '{arr[$NF]++} END {for (i in arr) print i, arr[i] | "sort"}' /home/user/lab1/script