Quand j'écris le fichier, un exemple du format de sortie est:
ok: servername 05/23/2018 ok: servername 07/16/2019
Je voudrais que le format soit quelque chose comme
ok: servername Mon May 23 00:00:00 EDT 2018 ok: servername Thu Jul 16 00:00:00 EDT 2019
J'ai besoin d'utiliser le shell bash Linux pour le faire. Si quelqu'un pouvait m'aider, je lui en serais très reconnaissant.
3 Réponses :
Selon man date
, la commande est capable de
durée d'affichage décrite par STRING, et non par "maintenant"
via --date
ou -d
. Donc, si vous stockez vos valeurs dans une variable
date --date="${DATE}" +%m/%d/%Y
, vous pouvez utiliser quelque chose comme
DATE="Thu Jul 16 00:00:00 EDT 2019"
pour reformater l'horodatage.
Pour plus d'informations, vous pouvez consulter Convertir les formats de date en bash .
Avec GNU date
, vous pouvez spécifier un fichier d'entrée contenant toutes vos chaînes de date; combiné avec cut
et paste
:
ok: servername 05/23/2018 ok: servername 07/16/2019
Output:
paste -d ' ' \ <(cut -d ' ' -f-2 infile) \ <(date -f <(cut -d ' ' -f3- infile) '+%m/%d/%Y')
Ceci utilise processus de substitution pour créer un fichier d'entrée temporaire pour date -f
, et pour coller
pour créer un nouveau fichier de sortie.
Quand les performances comptent. Mettez ceci dans script.awk
:
ok: servername 05/23/2018 ok: servername 07/16/2019
Utilisation: awk -f script.awk logfile
Sortie:
BEGIN{ m["Jan"]="01"; m["Feb"]="02"; m["Mar"]="03"; m["Apr"]="04"; m["May"]="05"; m["Jun"]="06"; m["Jul"]="07" # to be completed } { print $1, $2, m[$4] "/" $5 "/" $8 }
Qu'as-tu essayé?
Est-ce que cela répond à votre question? Convertir les formats de date en bash
Veuillez consulter: Que dois-je faire lorsque quelqu'un répond à ma question?