Как оптимизировать этот скрипт? - PullRequest
0 голосов
/ 12 июня 2019

Я просматриваю 2 файла с помощью awk.Я просматриваю первый файл и сохраняю нужные мне столбцы в массивах.Я использую после этих массивов, чтобы сделать сравнение со столбцом (8) второго файла.Мой сценарий работает очень медленно.Я хотел бы знать, если нет способа оптимизировать его?

FNR==NR
{
    a[$1];
    ip[NR]=$1;
    site[NR]=$2;
    next
}


BEGIN{

FS="[\t,=]";
OFS="|";

}

sudo awk -f{
l=length(ip);

if($8 in a)
{
    for(k=0;k<=l;k++)
   {
     if(ip[k]== $8)
     {

      if(NF <= 70)
         {
           print  "siteID Ipam: "site[k],"siteID zsc: "$14,"date: " $4,"src: "$8,"dst: "$10,"role: "$22,"urlcategory: "$36, "urlsupercategory: "$38,"urlclass: "$40;
          }
      else
         {
           print "siteID Ipam: "site[k], "siteID zsc: "$14,"date: " $4, "src: " $8, "dst: " $10, "role: "$22, "urlcategory: " $37, "urlsupercategory: "$39, "urlclass: $41;
         }
      break;
     }
   }
}
else
{
print $8 " is not in referentiel ";
}
}

1 Ответ

0 голосов
/ 12 июня 2019

Здесь лучше отформатирован тот же код с начальной опечаткой.

BEGIN {
    FS = "[\t,=]";
    OFS = "|";
}
FNR == NR {
    a[$1];
    ip[NR] = $1;
    site[NR] = $2;
    next;
}
sudo awk -f {
    l = length(ip);

    if($8 in a) {
        for(k = 0; k <= l; k++) {
            if(ip[k] == $8) {
                if(NF <= 70) {
                    print  "siteID Ipam: "site[k],"siteID zsc: "$14,"date: " $4,"src: "$8,"dst: "$10,"role: "$22,"urlcategory: "$36, "urlsupercategory: "$38,"urlclass: "$40;
                }
                else {
                    print "siteID Ipam: "site[k], "siteID zsc: "$14,"date: " $4, "src: " $8, "dst: " $10, "role: "$22, "urlcategory: " $37, "urlsupercategory: "$39, "urlclass: $41;
                }
                break;
            }
        }
    } else {
        print $8 " is not in referentiel ";
    }
}

предложить:

  1. исправлено sudo awk -f опечатка.

  2. a[$1]; -> a[$1] = 1;

  3. ($8 in a) -> (a[$8])

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...