Обычно лучше работать со строками (строками ). Такие инструменты, как awk
, работают с одной строкой за раз. Чтобы преобразовать ваши столбцы в строки (, то есть транспонировать ), используйте GNUdatamash
. Затем awk
может сделать правильные тесты для каждой строки отдельно, печатать ее или нет. В конце снова используйте datamash
, чтобы преобразовать результат в исходный формат :
.
Объяснение логики:
for
пропускает строку и начинает сначала, если какое-либо из полей 2..5 отличается от номера поля 1. Все 5 полей равны, это единственная возможность, которая позволяет программе перейти к следующей строке кода. for
пропускает строку и начинает сначала, если любое из следующих полей совпадает с первым. for
s, то это означает, что никакого противоречия вашим критериям обнаружено не было. Только тогда печатается вся строка. Примечания:
datamash transpose
необходимо прочитать и обработать весь файл (или поток )независимо от данных. В этом контексте мое решение неоптимально. datamash
недоступен, есть awk
решение здесь .Хорошо, мы выяснили, в чем была проблема, поэтому я закрываю вопрос, так как не было ни DDoS, ни какой-либо атаки:
ИТ-отдел клиента настроил свой балансировщик нагрузки буквально на экземпляры пулеметного сервера, и весь трафик, который я видел в журнале доступа, на самом деле был -проверкой работоспособности.
Теперь, когда они установили разумные 2 -3 минуты на проверку, она исчезла.
Извините за беспокойство.