Неверная дата в одной системе; совершенно действителен в другой системе?

Вы можете использовать cut, чтобы разделить интересующие вас символы, затем sortи uniq -c, чтобы подсчитать, сколько раз встречаются разные даты:

$ < input cut -c1-6 |sort |uniq -c
  3 Jan  2
  4 Jan  3

Или используйте awk, если вас интересует выходной формат:

$ awk '{a[substr($0, 1, 6)] += 1} END { for (x in a) printf "%s : %d\n", x, a[x] }' < x | sort
Jan  2 : 3
Jan  3 : 4

Первый блок использует ассоциативный массив для подсчета того, сколько раз появляется каждая дата, блок end просто выводит даты и их количество. sortвывод после этого, так как нет никакой гарантии в порядке, в котором ключи выходят из массива.

0
17.01.2020, 13:22
2 ответа

Я думаю, что размещение года может быть проблемой. Пока это не удается:

host:~ # date -d 'Thu 16 Jan 15:00:00 UTC 2020' 
date: invalid date ‘Thu 16 Jan 15:00:00 UTC 2020

это работает на моей виртуальной машине:

host:~ # date -d 'Thu 16 Jan 2020 15:00:00 UTC' 
Thu Jan 16 16:00:00 CET 2020

Я добавил формат даты к первому оператору, который работает:

shour=$(date "+%Y%m%d" -d "yesterday 3PM" -u)
ddate="$(date -d "${shour}" -u)"
sdate=$(date "+%Y%m%d" -d "$shour" -u)
0
28.01.2020, 02:38

dateне удается прочитать вывод по умолчаниюThu 16 Jan 15:00:00 UTC 2020

Любой вывод date, который вы хотите снова обработать в date, должен быть отформатирован со строкой формата '+%F %T'.

1
28.01.2020, 02:38

Теги

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