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
4 Réponses :
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
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.
Si vous avez la date code> GNU code>, vous pouvez utiliser l'option -f code> pour lire plusieurs dates à partir d'un fichier et invoquer
date code> une seule fois; combiné avec
couper code>,
coller code> et traiter la substitution, vous obtenez quelque chose comme
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.
Étant donné que vous avez un format fixe, vous pouvez supprimer la manipulation de la date et simplement utiliser sorties p> awk code> pour mélanger les champs autour de:
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
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é.