CAT FILE с сортировкой строк по столбцу DATE

Концептуально да, закрепление некоторых MAC-адресов является возможным решением (в соответствии с ответом @daniel выше ), но у этого есть много недостатков:

  • Хотя вы можете добавлять статические записи ARP, ваш злоумышленник все равно может подделать шлюз и ваши MAC-адреса, и обе системы будут анализировать кадры злоумышленников;
  • Если ваша система получает конфигурацию L3 через DHCP, злоумышленник может атаковать ее, чтобы убедиться, что вы используете другой шлюз, и в этом случае привязка MAC-адреса реального шлюза не будет иметь значения;
  • Вам будет сложно вести список статических записей, так как все системы нужно будет настраивать вручную;
0
18.12.2020, 12:15
2 ответа

Для определенного шаблона, такого как этот, вы можете разделить имя пути на отдельные компоненты /и -, поместив их в начале строки,

awk '{
    split($0, f, "[/-]");
    printf "%04d-%02d-%02d\t%s\t%s\n", f[6], f[5], f[4], f[7], $0
}'

, затем отсортируйте дату(yyyy-mm-dd)и имя файла (, например.access_NN.log.gz)соответственно

sort

и, наконец, отделить компоненты сортировки

cut -f3-

Предполагая, что образцы данных находятся в файле /tmp/logs, вы можете собрать их вместе следующим образом

awk '{ split($0, f, "[/-]"); printf "%04d-%02d-%02d\t%s\t%s\n", f[6], f[5], f[4], f[7], $0 }' /tmp/logs |
    sort |
    cut -f3-

/tmp/archive/9-7-2020/access_01.log.gz
/tmp/archive/9-7-2020/access_02.log.gz
/tmp/archive/9-7-2020/access_03.log.gz
/tmp/archive/9-7-2020/error_03.log.gz
/tmp/archive/9-7-2020/error_04.log.gz
/tmp/archive/9-7-2020/error_05.log.gz
/tmp/archive/9-8-2020/error_01.log.gz
/tmp/archive/9-8-2020/error_02.log.gz
/tmp/archive/9-8-2020/error_03.log.gz
/tmp/archive/9-8-2020/error_04.log.gz
/tmp/archive/9-8-2020/error_05.log.gz
/tmp/archive/9-9-2020/access_01.log.gz
/tmp/archive/9-9-2020/access_02.log.gz
/tmp/archive/9-9-2020/access_03.log.gz
/tmp/archive/9-10-2020/error_04.log.gz
/tmp/archive/9-10-2020/error_05.log.gz
1
18.03.2021, 22:42

Здесь, предполагая, что все строки всегда начинаются с /tmp/archive/или чего-либо одинаковой длины, вы можете сделать:

sort -t- -k3,3.4n -k1.14,1n -k2,2n -k3.5

Что здесь можно упростить до:

sort -t- -k3n -k1.14n -k2n -k3.5

поскольку -не будет разделителем тысяч ни в одной локали (, так как это также символ для отрицательного знака ), поэтому с флагом n, ключевой спецификацией -k1.14n(, который выберет 7-12-2020/access_04.logв первой строке, например )или -k1.14,1n(, которые выберут только 7), оба дадут число7.

0
18.03.2021, 22:42

Теги

Похожие вопросы