Bash: сравните целевую дату для серии дат

Если вам нужно просто получить мгновенное представление о том, какие IP подключены и какое соединение генерирует сетевой трафик, вы можете попробовать iptraf.

Если вам нужны дополнительные возможности, такие как учет, графики и удаленный мониторинг, вы можете попробовать ntop. Ntop работает как deamon, мониторинг и администрирование осуществляется с помощью браузера на localhost:3000.

0
08.12.2018, 14:53
2 ответа

Поскольку даты расположены в Y-M-D H:M:Sпорядке, их можно сравнить как текстовый (лексикографический или словарной порядок в терминах непрофессионала ).

Есть три поля (столбца ), а не два. Если только разделитель для первого столбца не отличается от разделителя для других столбцов. Поскольку вы представляете разделители как пробел, у нас нет возможности узнать, является ли это пробелом, вкладкой или чем-то еще. Я предполагаю, что три столбца разделены либо пробелом, либо табуляцией.

Чтобы решить эту проблему, установите переменную со значением даты поиска и используйте эту команду:

 s='2018-12-03 19:09:56.250641'

 awk -vs="$s" '( $2" "$3 < s ){ print $1; exit }' infile

То есть:

  • Сравните объединенные значения полей 2 и 3 с искомым значением.
  • Когда это сравнение становится верным (ниже)
  • Распечатать первый столбец и выйти.
2
28.01.2020, 02:31

Обычно я делаю то же самое с awk, но вот ряд текстовых инструментов для достижения того же результата:

$ echo "0000    $s" | sort -k2 - infile | grep -B1 "$s" | head -1 | cut -d" " -f1
0298
0
28.01.2020, 02:31

Теги

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