Итак, после некоторого поиска и разговора со службой поддержки, мы наконец разобрался, что останавливает UFW. В системе также был настроен APF
(Advanced Policy Firewall - R-fx Networks), который добавляет в систему задание cron. В полночь задание удаляет все правила и сбрасывает правила, определенные для APF
.
Ниже ответ после правильного разъяснения вопроса, вот окончательное решение для этого:
awk -F'\n' -v RS='Stanford University'
'NR==1 && NR==FNR{for (i=1;i<NF;i++)above[$i]++;next}
NR==2&&NR==FNR{for (j=2;j<NF;j++)below[$j]++;next}
NR==3{for (x=1;x<NF;x++)X2017[$x]++;next}
NR==4{for (y=2;y<NF;y++)Y2017[$y]++;next}
END{ for (Z in Y2017) {if (Z in above) print Z>"Ranked-above.txt" };
for (T in X2017) {if (T in below) print T>"Ranked-below.txt" };
}' 2018 2017
На выходе будут два файла с рейтингом -выше.txt и с рейтингом -ниже.txt с ожидаемым результатом.
**Ranked-above.txt**
University of Cambridge
**Ranked-below.txt**
Вы можете искать другие университеты, указав вRS='University NAME HERE'
Это не ответ на ваш вопрос в том смысле, что он не дает нужного результата. Однако он создает таблицу изменений рангов между строками в двух файлах.
Следующая программа awk
выведет изменение ранжирования между двумя файлами, как показано здесь:
$ awk -f script.awk rankings-2017.txt rankings-2018.txt
University of Oxford
+2 University of Cambridge
-1 California Institute of Technology
-1 Stanford University
NEW Uppsala University
-1 Massachusetts Institute of Technology
(«Уппсальский университет» был добавлен в предпоследнюю строку второго файла ).
Скрипт:
NR == FNR { rank[++n] = $0 }
NR != FNR { ++nn;
for (i = 1; i <= n; ++i) {
if (rank[i] == $0) {
if (i == nn) {
printf(" ");
} else {
printf("%+3d", i - nn);
}
printf("\t%s\n", $0);
next;
}
}
printf("NEW\t%s\n", $0);
}