Вы смотрели логи? Надеюсь, вы сможете найти их с помощью sudo locate catalina
. Вы также можете попробовать развернуть пример приложения в каталоге веб-приложений.
Предполагая, что у вашего awk
есть время -связанные функции mktime()
иstrftime()
(mawk
или GNU awk
), тогда скрипт awk
BEGIN {
OFS = FS = ","
}
{
t = mktime(sprintf("%4d %.2d %.2d 00 00 00",
substr($1,2,4),
substr($1,6,2),
substr($1,8,2)));
$1 = substr($1,1,1) strftime("%Y%m%d", t - 7*24*60*60)
print
}
разделит спецификацию даты в первом столбце с разделителями-запятыми -с помощью нескольких вызовов substr()
и создаст отметку времени Unix с mktime()
.
Затем он уменьшит сгенерированную метку времени ровно на семь дней (в секундах )и повторно -отформатирует ее как YYYYMMDD
строку даты, используя strftime()
. Сгенерированная строка даты вместе с первым символом данных первого столбца (a D
в примере )затем назначается первому столбцу до того, как вся измененная строка будет напечатана.
Тестирование вышеуказанного скрипта на некоторых данных:
$ cat file
D20200826,S2927,977,1
D20200106,S2927,977,1
$ awk -f script.awk file
D20200819,S2927,977,1
D20191230,S2927,977,1
Несколько укороченный вариант:
BEGIN { OFS = FS = "," }
{
$1 = substr($1,1,1) strftime("%Y%m%d",
mktime(sprintf("%4d %.2d %.2d 00 00 00",
substr($1,2,4),
substr($1,6,2),
substr($1,8,2))) - 7*24*60*60)
}
1
И, как "один -лайнер":
awk -F, '{ $1 = substr($1,1,1) strftime("%Y%m%d",mktime(sprintf("%4d %.2d %.2d 00 00 00",substr($1,2,4),substr($1,6,2),substr($1,8,2)))-7*24*60*60) }; 1' OFS="," file
Только для зевак
awk -F, '{$1 = strftime("D%Y%m%d",\
mktime(gensub(/.(.{4})(.{2})(.{2})/, "\\1 \\2 \\3 0 0 0", 1, $1))-7*3600*24)}1' OFS=, file