конфигурация
служба1,208000,правило1
служба2,308000,правило2
файл1
значение1,значение2,сервис1|servicex|сервис2,значение3,значение4,208000
значение1,значение2,сервис1,значение3,значение4,208000
значение1,значение2,сервис1,значение3,значение4,
значение1,значение2,сервисx ,value3,value4,208000
value1,value2,service2,value3,value4,308000
value1,value2,service2,value3,value4,308000
value1,value2,service3,value3,value4,408000
выход
значение1,значение2,сервис1|servicex|сервис2,значение3,значение4,208000,правило1
значение1,значение2,сервис1,значение3,значение4,208000,правило1
значение1,значение2,сервис1,значение3,значение4,,NORULEMATCHING
> value1,value2,servicex,value3,value4,208000,NORULEMATCHING
value1,value2,service2,value3,value4,308000,rule2
value1,value2,service2,value3,value4,308000,rule2
value1 ,значение2,сервис3,значение3,значение4,408000,NORULEMATCHING
Я пробовал следующее:
awk -f myawk.awk config file1
где myawk.awk
BEGIN { FS = OFS = "," }
FNR == NR {
servicename=$1;
qos=$2;
$1 = "";
$2 = "";
a[servicename,qos] = $0;
next
}
{
split($3,plan,"|");
if(plan[1]","$6 in a){
split(a[plan[1]","$6],ruledesc,",");
$7 = ruledesc[3];
print $0;
}
else {
$7 = NORULEMATCHING;
print $0;
}
}
Примечание.
– Из файла конфигурации нам нужно сопоставить столбец 1 и столбец 2 (объединенные как первичный ключ) из столбца 3 файла 1 (первое поле после FD в виде канала) и столбца 5.
– Если он совпадает, вставьте столбец 3 из конфигурационный файл в 7-м столбце вывода
Задача, с которой я сталкиваюсь, - это создание массива на основе двух столбцов.