Преобразуйте строку в метку времени даты в простофиле или awk

Поместите его в последний раз в ~/.xinitrc (без &). Однако, поскольку это не было предназначено, чтобы использоваться как этот, уничтожить его, необходимо использовать pkill -9 metacity или закрытие Ваш компьютер. (Кроме этого, это работает отлично; я использовал его как этот на моем Debian целую вечность, пока я не нашел OpenBox.), Но никакое беспокойство, Вы могли сделать псевдоним pkill управляйте, хотите ли Вы обычно возвратиться к консоли; и, нет никакого Метагорода завершения вреда как этот.

6
14.08.2014, 17:45
6 ответов

Один из способов сделать это с помощью GNU awk:

echo 20140805234656 | awk 'BEGIN { FIELDWIDTHS = "4 2 2 2 2 2" } { printf "%s-%s-%s %s:%s:%s\n", $1, $2, $3, $4, $5, $6 }'
14
27.01.2020, 20:20

Вы можете использовать подстроку следующим образом:

echo 20140805234656 | awk '{print substr($0,1,4)"-"substr($0,5,2)"-"substr($0,7,2)" "substr($0,9,2)":"substr($0,11,2)":"substr($0,13,2) }'

Вероятно, есть и более простые способы.

.
10
27.01.2020, 20:20

Другой подход GNU awk:

result = gensub("(....)(..)(..)(..)(..)", "\\1-\\2-\\3 \\4:\\5:", 1, your_variable)
5
27.01.2020, 20:20

Другой способ:

$ echo 20140805234656 |
  awk '{split($0,a,"");printf("%s-%s-%s %s:%s:%s\n",a[1]a[2]a[3]a[4],a[5]a[6],a[7]a[8],a[9]a[10],a[11]a[12],a[13]a[14])}'
2014-08-05 23:46:56
0
27.01.2020, 20:20

Попробуйте:

echo 20140805234656 | awk ' { printf "%s-%s-%s %s:%s:%s", 
                                     substr($0,1,4),
                                     substr($0,5,2),
                                     substr($0,7,2),
                                     substr($0,9,2),
                                     substr($0,11,2),
                                     substr($0,13,2)
                             } '

Или, если хотите сначала присвоить переменной:

echo 20140805234656 | awk ' { d=sprintf ("%s-%s-%s %s:%s:%s", 
                                     substr($0,1,4),
                                     substr($0,5,2),
                                     substr($0,7,2),
                                     substr($0,9,2),
                                     substr($0,11,2),
                                     substr($0,13,2));
                              print "Date is: " d
                             } '
3
27.01.2020, 20:20

Другой GNU awk ответ

gawk -v timestamp=20140805234656 '
    BEGIN {
        if (match(timestamp, /(....)(..)(..)(..)(..)(..)/, m)) {
            t = mktime(m[1] " " m[2] " " m[3] " " m[4] " " m[5] " " m[6])
            print strftime("%F %T", t)
            print strftime("%c", t) 
        }
    }
'
2014-08-05 23:46:56
Tue Aug  5 23:46:56 2014
6
27.01.2020, 20:20

Теги

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