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

Как сделать, чтобы преобразовать формат даты из "09-12": 36:10» на «09-Month-Year 12:36:10», заменив «Month» на название текущего месяца (трехбуквенное сокращение) и «Year» на текущий год (четыре цифры), используя awk? Например, измените «09-12:36:10» на «09-JUL-2018 12:36:10».

-1
11.07.2018, 07:47
3 ответа

просто,

echo 09-12:36:10 | awk -F '-' -v date="$(date +"-%b-%Y " )" '{ print $1date$2}'

Если вы хотите, чтобы месяц был в верхнем регистре:

echo 09-12:36:10 | awk -F '-' -v date="$(date +"-%b-%Y " )" '{ print toupper($1date$2)}'
2
28.01.2020, 05:08

Если у вас есть GNU Awk (gawk), вы можете использовать его встроенный -в systimeиstrftime

gawk -F'[-]' '{print $1, strftime("%b %Y", systime()), $2}'   

Пр.

$ echo '09-12:36:10' | gawk -F'[-]' '{print $1, strftime("%b %Y", systime()), $2}'
09 Jul 2018 12:36:10

Если вам нужен сокращенный месяц в верхнем регистре, попробуйте %^b, например.

$ echo '09-12:36:10' | awk -F'[-]' '{print $1 strftime("-%^b-%Y", systime()), $2}'
09-JUL-2018 12:36:10
0
28.01.2020, 05:08

Не знаю, насколько надежным он вам нужен, но вот начало:

#!/usr/bin/awk -f
BEGIN {
    FS = "-"
}
{
    print $1 "-MONTH-YEAR", $2
}
1
28.01.2020, 05:08

Теги

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