Q:

Как извлечь определенный фрагмент из поля в awk?

Существует файл с логами с названием PROXY.1.log, по нему надо определить 10 серверов (имя серверов в поле $7), с которых был получен наибольший объем информации (объем информации в поле $5)
Имена серверов иногда повторяются, поэтому нужно определить общий объем информации с каждого сервера, а потом уже показать 10 серверов с наибольшей информацией.
Структура записи файла log-a proxy-сервера:
965332284.687 126107 10.1.6.0 TCP_MISS/503 1061 GET ftp://ftp.ruhr-uni-bochum.de/.subdisc3/local/winnt/2000/fixes/usa/sp1/sp1network.exe alex DIRECT/ftp.ruhr-uni-bochum.de -
965332324.957 126090 10.1.6.0 TCP_MISS/503 1033 GET ftp://ftp.ism.ru/pub/drivers/software/microsoft/win2000/sp1network.exe alex DIRECT/ftp.ism.ru -
965332336.987 129098 10.1.6.0 TCP_MISS/503 1033 GET ftp://ftp.ism.ru/pub/drivers/software/microsoft/win2000/sp1network.exe alex DIRECT/ftp.ism.ru -
965332348.015 239306 10.1.6.0 TCP_MISS/504 1066 GET http://mschus.www.conxion.com/download/win2000platform/sp/sp1/nt5/en-us/sp1network.exe alex DIRECT/mschus.www.conxion.com -
965332373.817 123096 10.1.6.0 TCP_MISS/503 1033 GET ftp://ftp.ism.ru/pub/drivers/software/microsoft/win2000/sp1network.exe alex DIRECT/ftp.ism.ru -
965332377.837 129099 10.1.6.0 TCP_MISS/503 1033 GET ftp://ftp.ism.ru/pub/drivers/software/microsoft/win2000/sp1network.exe alex DIRECT/ftp.ism.ru -
965332411.365 237443 10.1.6.0 TCP_MISS/504 1048 GET ftp://ftp.darmstadt.gmd.de/pub/pc/Win2k/microsoft/fixes/sp1/en/sp1network.exe alex DIRECT/ftp.darmstadt.gmd.de -
965332439.117 150093 10.1.6.0 TCP_MISS/503 1065 GET http://mschus.www.conxion.com/download/win2000platform/sp/sp1/nt5/en-us/sp1network.exe alex DIRECT/mschus.www.conxion.com -
965332470.987 132093 10.1.6.0 TCP_MISS/503 1065 GET http://mschus.www.conxion.com/download/win2000platform/sp/sp1/nt5/en-us/sp1network.exe alex DIRECT/mschus.www.conxion.com -
965332472.967 132089 10.1.6.0 TCP_MISS/503 1065 GET http://mschus.www.conxion.com/download/win2000platform/sp/sp1/nt5/en-us/sp1network.exe alex DIRECT/mschus.www.conxion.com -
965332483.137 219058 10.1.6.0 TCP_MISS/503 1033 GET ftp://ftp.ism.ru/pub/drivers/software/microsoft/win2000/sp1network.exe alex DIRECT/ftp.ism.ru -
965332490.137 192090 10.1.6.0 TCP_MISS/503 1065 GET http://mschus.www.conxion.com/download/win2000platform/sp/sp1/nt5/en-us/sp1network.exe alex DIRECT/mschus.www.conxion.com -
965332514.167 125964 10.1.6.0 TCP_MISS/503 1061 GET ftp://ftp.ruhr-uni-bochum.de/.subdisc3/local/winnt/2000/fixes/usa/sp1/sp1network.exe alex DIRECT/ftp.ruhr-uni-bochum.de -
965332528.157 173922 10.1.6.0 TCP_MISS/503 1065 GET http://mschus.www.conxion.com/download/win2000platform/sp/sp1/nt5/en-us/sp1network.exe alex DIRECT/mschus.www.conxion.com -
965332532.458 153276 10.1.6.0 TCP_MISS/503 1039 GET ftp://ftp.hu-berlin.de/pub/windows/fixes/w2000/sp1/english/sp1network.exe alex DIRECT/ftp.hu-berlin.de -
965332554.127 123093 10.1.6.0 TCP_MISS/503 1033 GET ftp://ftp.ism.ru/pub/drivers/software/microsoft/win2000/sp1network.exe alex DIRECT/ftp.ism.ru -
965332555.157 126095 10.1.6.0 TCP_MISS/503 1033 GET ftp://ftp.ism.ru/pub/drivers/software/microsoft/win2000/sp1network.exe alex DIRECT/ftp.ism.ru -
965332588.327 143873 10.1.6.0 TCP_MISS/504 1034 GET ftp://ftp.ism.ru/pub/drivers/software/microsoft/win2000/sp1network.exe alex DIRECT/ftp.ism.ru -
965332592.437 123099 10.1.6.0 TCP_MISS/503 1033 GET ftp://ftp.ism.ru/pub/drivers/software/microsoft/win2000/sp1network.exe alex DIRECT/ftp.ism.ru -
965332607.457 129096 10.1.6.0 TCP_MISS/503 1033 GET ftp://ftp.ism.ru/pub/drivers/software/microsoft/win2000/sp1network.exe alex DIRECT/ftp.ism.ru -
965332651.327 132098 10.1.6.0 TCP_MISS/503 1065 GET http://mschus.www.conxion.com/download/win2000platform/sp/sp1/nt5/en-us/sp1network.exe alex DIRECT/mschus.www.conxion.com -
965332653.297 132095 10.1.6.0 TCP_MISS/503 1065 GET http://mschus.www.conxion.com/download/win2000platform/sp/sp1/nt5/en-us/sp1network.exe alex DIRECT/mschus.www.conxion.com -
965332706.337 146843 10.1.6.0 TCP_MISS/503 1065 GET http://mschus.www.conxion.com/download/win2000platform/sp/sp1/nt5/en-us/sp1network.exe alex DIRECT/mschus.www.conxion.com -
965332714.477 179843 10.1.6.0 TCP_MISS/503 1065 GET http://mschus.www.conxion.com/download/win2000platform/sp/sp1/nt5/en-us/sp1network.exe alex DIRECT/mschus.www.conxion.com -
965332734.467 123099 10.1.6.0 TCP_MISS/503 1047 GET ftp://ftp.darmstadt.gmd.de/pub/pc/Win2k/microsoft/fixes/sp1/en/sp1network.exe alex DIRECT/ftp.darmstadt.gmd.de -
965332735.477 126090 10.1.6.0 TCP_MISS/503 1039 GET ftp://ftp.mathematik.uni-marburg.de/pub/mirror/w2ksp/en-us/sp1network.exe alex DIRECT/ftp.mathematik.uni-marburg.de -
965332760.215 191697 10.1.6.0 TCP_MISS/504 1066 GET http://mschus.www.conxion.com/download/win2000platform/sp/sp1/nt5/en-us/sp1network.exe alex DIRECT/mschus.www.conxion.com -
965332775.457 125723 10.1.6.0 TCP_MISS/503 1033 GET ftp://ftp.ism.ru/pub/drivers/software/microsoft/win2000/sp1network.exe alex DIRECT/ftp.ism.ru -
965332784.647 125972 10.1.6.0 TCP_MISS/503 1033 GET ftp://ftp.ism.ru/pub/drivers/software/microsoft/win2000/sp1network.exe alex DIRECT/ftp.ism.ru -
965332822.637 123042 10.1.6.0 TCP_MISS/503 1033 GET ftp://ftp.ism.ru/pub/drivers/software/microsoft/win2000/sp1network.exe alex DIRECT/ftp.ism.ru -
965332824.627 123101 10.1.6.0 TCP_MISS/503 1033 GET ftp://ftp.ism.ru/pub/drivers/software/microsoft/win2000/sp1network.exe alex DIRECT/ftp.ism.ru -
965332855.798 140926 10.1.6.0 TCP_MISS/503 1033 GET ftp://ftp.ism.ru/pub/drivers/software/microsoft/win2000/sp1network.exe alex DIRECT/ftp.ism.ru -
965332862.907 123097 10.1.6.0 TCP_MISS/503 1065 GET http://mschus.www.conxion.com/download/win2000platform/sp/sp1/nt5/en-us/sp1network.exe alex DIRECT/mschus.www.conxion.com -
965332864.135 239427 10.1.6.0 TCP_MISS/504 1040 GET ftp://ftp.hu-berlin.de/pub/windows/fixes/w2000/sp1/english/sp1network.exe alex DIRECT/ftp.hu-berlin.de -
965332895.307 146475 10.1.6.0 TCP_MISS/503 1065 GET http://mschus.www.conxion.com/download/win2000platform/sp/sp1/nt5/en-us/sp1network.exe alex DIRECT/mschus.www.conxion.com -
965332923.787 132098 10.1.6.0 TCP_MISS/503 1065 GET http://mschus.www.conxion.com/download/win2000platform/sp/sp1/nt5/en-us/sp1network.exe alex DIRECT/mschus.www.conxion.com -
965332933.797 144096 10.1.6.0 TCP_MISS/503 1065 GET http://mschus.www.conxion.com/download/win2000platform/sp/sp1/nt5/en-us/sp1network.exe alex DIRECT/mschus.www.conxion.com -
965332953.057 123091 10.1.6.0 TCP_MISS/503 1061 GET ftp://ftp.ruhr-uni-bochum.de/.subdisc3/local/winnt/2000/fixes/usa/sp1/sp1network.exe alex DIRECT/ftp.ruhr-uni-bochum.de -
965333004.947 123096 10.1.6.0 TCP_MISS/503 1033 GET ftp://ftp.ism.ru/pub/drivers/software/microsoft/win2000/sp1network.exe alex DIRECT/ftp.ism.ru -
965333005.947 126089 10.1.6.0 TCP_MISS/503 1033 GET ftp://ftp.ism.ru/pub/drivers/software/microsoft/win2000/sp1network.exe alex DIRECT/ftp.ism.ru -
965333015.078 176088 10.1.6.0 TCP_MISS/503 1039 GET ftp://ftp.mathematik.uni-marburg.de/pub/mirror/w2ksp/en-us/sp1network.exe alex DIRECT/ftp.mathematik.uni-marburg.de -
965333021.078 216044 10.1.6.0 TCP_MISS/503 1065 GET http://mschus.www.conxion.com/download/win2000platform/sp/sp1/nt5/en-us/sp1network.exe alex DIRECT/mschus.www.conxion.com -
965333030.077 134888 10.1.6.0 TCP_MISS/503 1033 GET ftp://ftp.ism.ru/pub/drivers/software/microsoft/win2000/sp1network.exe alex DIRECT/ftp.ism.ru -
965333043.217 123092 10.1.6.0 TCP_MISS/503 1033 GET ftp://ftp.ism.ru/pub/drivers/software/microsoft/win2000/sp1network.exe alex DIRECT/ftp.ism.ru -
965333055.167 125943 10.1.6.0 TCP_MISS/503 1033 GET ftp://ftp.ism.ru/pub/drivers/software/microsoft/win2000/sp1network.exe alex DIRECT/ftp.ism.ru -
965333104.097 132089 10.1.6.0 TCP_MISS/503 1065 GET http://mschus.www.conxion.com/download/win2000platform/sp/sp1/nt5/en-us/sp1network.exe alex DIRECT/mschus.www.conxion.com -
965333132.057 146711 10.1.6.0 TCP_MISS/503 1065 GET http://mschus.www.conxion.com/download/win2000platform/sp/sp1/nt5/en-us/sp1network.exe alex DIRECT/mschus.www.conxion.com -
965333157.207 146925 10.1.6.0 TCP_MISS/503 1065 GET http://mschus.www.conxion.com/download/win2000platform/sp/sp1/nt5/en-us/sp1network.exe alex DIRECT/mschus.www.conxion.com -
965333162.107 192030 10.1.6.0 TCP_MISS/503 1065 GET http://mschus.www.conxion.com/download/win2000platform/sp/sp1/nt5/en-us/sp1network.exe alex DIRECT/mschus.www.conxion.com -
965333185.257 123091 10.1.6.0 TCP_MISS/503 1039 GET ftp://ftp.hu-berlin.de/pub/windows/fixes/w2000/sp1/english/sp1network.exe alex DIRECT/ftp.hu-berlin.de -
965333201.428 141255 10.1.6.0 TCP_MISS/503 1047 GET ftp://ftp.darmstadt.gmd.de/pub/pc/Win2k/microsoft/fixes/sp1/en/sp1network.exe alex DIRECT/ftp.darmstadt.gmd.de -
965333211.397 192092 10.1.6.0 TCP_MISS/503 1065 GET http://mschus.www.conxion.com/download/win2000platform/sp/sp1/nt5/en-us/sp1network.exe alex DIRECT/mschus.www.conxion.com -
965333226.557 126062 10.1.6.0 TCP_MISS/503 1033 GET ftp://ftp.ism.ru/pub/drivers/software/microsoft/win2000/sp1network.exe alex DIRECT/ftp.ism.ru -
965333264.427 188923 10.1.6.0 TCP_MISS/504 1062 GET ftp://ftp.ruhr-uni-bochum.de/.subdisc3/local/winnt/2000/fixes/usa/sp1/sp1network.exe alex DIRECT/ftp.ruhr-uni-bochum.de -
965333279.428 129098 10.1.6.0 TCP_MISS/503 1033 GET ftp://ftp.ism.ru/pub/drivers/software/microsoft/win2000/sp1network.exe alex DIRECT/ftp.ism.ru -
965333281.417 129095 10.1.6.0 TCP_MISS/503 1033 GET ftp://ftp.ism.ru/pub/drivers/software/microsoft/win2000/sp1network.exe alex DIRECT/ftp.ism.ru -
965333291.517 125857 10.1.6.0 TCP_MISS/503 1033 GET ftp://ftp.ism.ru/pub/drivers/software/microsoft/win2000/sp1network.exe alex DIRECT/ftp.ism.ru -

$1 — время запроса;
$5 — объем переданных данных в байтах;
$6 — тип запроса;
$7 — запрошенный ресурс;
$8 — имя пользователя;
А вот и сам код:
function idx_of_max(a) {
i_max = 0;
for (i in a) {
    if (a[i] > a[i_max]) {
        i_max = i;
    }
}
return i_max;
}

{
    servers[$7] += $5;
}

END {
for (n = 1; n <= 10; n++) {
        srv = idx_of_max(servers);
        if (!srv) {
           break;
        }
        print n ": " srv " = " servers[srv];
        delete servers[srv];
    }
}

Проблема вот в чем:
Нужно указать именно имя серверов.
То есть должно по итогу быть как-то так:

Как это сделать?

A:

Используйте функцию sub:
{
    sub(/^[a-z]+:\/\//, "", $7);
    sub(/\/.*$/, "", $7);
    servers[$7] += $5;
}

