Преобразовать строку в формат времени и добавить текущую дату - Shell / ksh

По какой-то причине соответствие всего слова ( \ <... \> ) не работает с моей версией awk , поэтому мне пришлось решить эту проблему с помощью подсказки grep :

grep '\ ' filename | awk '{print $ 1}'

0
17.05.2018, 02:44
2 ответа

Si por ksh, te refieres a ksh93:

$ t=093500
$ DATEMSK=/dev/stdin <<<%H%M%S printf "%(%F %T)T\n" "$t"
2018-05-17 09:35:00

O:

$ printf '%(%F)T %.8s\n' now "${t//??/\0:}"
2018-05-17 09:35:00

O portablemente (conchas de familias Bourne o csh ofish)

$ date +"%Y-%m-%d $t" | sed 's/\(..\)\(..\)$/:\1:\2/'
2018-05-17 09:35:00

(para rc -como conchas, use date +'%Y-%m-%d '$ten lugar de)

3
28.01.2020, 02:23

He aquí una posible solución. Funciona como tal:

$./format_date.sh 092533
2018-05-17 09:25:33
#!/bin/bash

format_time(){
    point=0
    while [ "$point" -le "${#1}" ];
    do
        string=$string"${1:$point:2}"
        if [ "$point" -lt "$((${#1}-2))"  ]
        then
        string=$string":"
        fi
        point=$((point+2))
    done
    echo "$string"
}

echo "$(date +'%Y-%m-%d')" "$( format_time "$1" )"

Esto aprovecha la sustitución de parámetros, típica de bashy ksh, por lo que se adapta a sus etiquetas de pregunta, pero no es adecuado para POSIX /bin/shya que el formulario ${variable:position:offset}no funciona en POSIX /bin/sh.

0
28.01.2020, 02:23

Теги

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