В AWK:
{
sub(",", "", $0); # kill first comma, thanks Thomas
cmd="date -d \""$1" "$2" "$3" "$4" "$5" 1 day ago\" \"+%b %e\"";
cmd|getline dt;
close(cmd);
if (dt==prev && blah==substr($0, index($0, $6))) { times = times + 1 }
else { print times" "line; times = 1 };
prev=$2" "$3;
blah=substr($0, index($0,$6));
line=$0;
}
END { print times" "line }
Предполагая, что у нас есть этот ввод внутри файла с именем blah.log
:
Sun Aug 21 2016 03:00:00, BLAH
Mon Aug 22 2016 03:54:00, BLAH
Tue Aug 23 2016 04:22:11, BLAH
Thu Aug 25 2016 05:00:00, BLAH
И сценария awk в sequence.awk
, мы можем сделать:
$ awk -f consecutive.awk blah.log
3 Tue Aug 23 2016 04:22:11 BLAH
1 Thu Aug 25 2016 05:00:00 BLAH
Что дает количество последовательных дней в качестве дополнительного столбца и печатает последнюю дату. Чтобы избавиться от даты в выводе, вы можете просто изменить время печати в строке
на время печати "" blah
(в двух местах, которые появляются).
Как это работает:
Примечания:
дату
, но игнорирует часовые пояса sort -t, -k 2
. substr
). В противном случае вы можете прервать вызов substr
, и сценарий будет работать на любом posix awk. Не знаю, в каком из них это исправлено, но для другого приложения (версия Hacknet GOG) мне пришлось установить версию этих пакетов jessie-backports:
Теперь Steam запускается и работает . В играх есть другие проблемы, но сам steam запускается без проблем.