0
votes

Convertir le format de date dans le fichier sur une colonne spécifique de + "% y-% m-% d" à + "% d-% m-% y"

Je suis en cours d'exécution d'un script Bash, qui génère ceci:

date: invalid date 2019-06-06 08:30 99432434
date: invalid date 2019-06-06 10:00 99432465
date: invalid date 2019-06-06 11:00 97987567
date: invalid date 2019-06-06 12:00 97433556
date: invalid date 2019-06-06 13:15 96844558
date: invalid date 2019-06-06 17:00 97091234
date: invalid date 2019-06-06 18:00 96764765
date: invalid date 2019-06-06 19:00 99878787


1 commentaires

Vous vous demandez simplement pourquoi voudriez-vous faire cela? Vous convertissez votre fichier d'un format parfaitement tri-type en un format parfaitement désavouble. Je comprends que vous devez avoir vos raisons ... mais je voulais simplement signaler que plus tôt ou tard, vous pourriez vous rendre compte qu'un bon format ISO est meilleur qu'un format localement utilisé.


4 Réponses :


0
votes

Lisez la première colonne en une variable ( $ d code> ci-dessous), et le reste dans un autre ( $ reposer code> ci-dessous):

while read -r d rest; do echo $(date -d "$d" +%d-%m-%Y) $rest; done


6 commentaires

J'ai ajouté votre suggestion mais cela n'a pas changé la date. C'est le script. Pastebin.com/A7H07JRB


Ah, oui, j'ai copié et collé votre script qui avait le format de date incorrect. J'ai mis à jour.


Voir Pourquoi-is-utiliser -a-shell-shell-boucle-to-process-text-text-Pra Ctitice et mywiki .woolgedge.org / citations pour certaines des questions avec ce script.


Voir le chemin-de-de-de-la-la-résistance et le meilleur usage-user-of-time


Le chemin du moindre résistance et la meilleure utilisation de son temps consiste à ignorer complètement la question, mais si vous ne le ferez pas et décidez de fournir une réponse à la place, vous devez donner à IMHO, vous devriez donner aux gens la réponse (maintenant et à l'avenir) a Heads Up S'il y a des problèmes courants et courants dans le script résultant, surtout si cela est aussi facile que de fournir des liens vers des articles existants sur les problèmes. Je doute que si la PP connaissait ces problèmes jusqu'à présent compte tenu du script qu'elle a fourni dans sa question.


Je ne parlais pas de la meilleure utilisation de mon temps, mais j'apprécie vos commentaires.



0
votes

Si vous avez la date GNU , vous pouvez utiliser l'option -f pour lire plusieurs dates à partir d'un fichier et invoquer date une seule fois; combiné avec couper , coller et traiter la substitution, vous obtenez quelque chose comme xxx


2 commentaires

Voilà comment vous le feriez?


@Seanbright probablement, si j'avais le problème exact? À moins que nous parlions de maaaaany lignes, il n'y aura pas de différence notable entre aucune des approches ici.



1
votes

Étant donné que vous avez un format fixe, vous pouvez supprimer la manipulation de la date et simplement utiliser awk pour mélanger les champs autour de: xxx

sorties xxx


0 commentaires

1
votes

avec n'importe quel SED:

$ sed 's/\(....\)\(....\)\(..\)/\3\2\1/' file
05-06-2019 08:30 99432434
05-06-2019 10:00 99432465
05-06-2019 11:00 97987567
05-06-2019 12:00 97433556
05-06-2019 13:15 96844558
05-06-2019 17:00 97091234
05-06-2019 18:00 96764765
05-06-2019 19:00 99878787


0 commentaires