|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : décembre 2008 Messages : 14 ![]() |
Bonjour,
Je tiens d'abord à signaler que je suis débutant en langage unix. Contexte : Je crée des script unix sous windows grace à cygwin afin de formater des fichiers de log d'un serveur de ma boite. Problème: J'utilise la commande sed afin de trier tout cela, et j'aimerais effectuer grâce à cette commande un interchangement de chaine dans une ligne. Plus explicitement, j'aimerais changer le format de la date qui est de la forme Ma réflexion porte sur l'utilisation de la commande sed, j'ai vu qu'elle était très puissante, qu'elle permet de rechercher des chaines, de les remplacer/supprimer, de mettre des variables en tampon (mémoire annexe/principale). Je vous présente une ligne de mon fichier de log : J'espère avoir été assez explicite. Merci beaucoup Bonne journée à tous |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() |
j'ai découvert ce smiley l'autre jour, donc j'en profite
![]() Sinon, en version simple, tu as: Code :
$ echo "IP;logname;dd/mm/yyyy;url" | sed 's#;\(\d\d\)/\(\d\d\)/\(\d\d\d\d\);#;$3/$2/$1;#' Code :
's#;\(\d\d\)/\(\d\d\)/\(\d\d\d\d\);#;$3/$2/$1;# s#blah#bleh# remplace blah par bleh Ici, blah vaut ;\(\d\d\)/\(\d\d\)/\(\d\d\d\d\);, c'est à dire un point-virgule suivi de deux chiffres (\d) suivi d'un slash /, suivi de deux chiffres (\d) etc. et terminé par un point-virgule. Les parenthèses (qui sont échappées) servent à mémoriser ce qui est trouvé dans des variables. Le premier couple de parenthèse \(\d\d\) mémorise donc les deux premiers chiffres etc. bleh vaut quand à lui tout simplement ;$3/$2/$1;, c'est à dire qu'on remet les point-virgules (car on va remplacer toute la première chaine par la seconde, et comme les points-virgules sont présents dans la première chaîne, il faut les remettre ici) suivi de $3, c'est à dire le contenu du troisième couple de parenthèses de la première partie (l'année), puis un slash, puis $2 (deuxième couple : le mois), etc. et on termine par un dernier point-virgule... edit : pour info, sed existe en version windows. |
|
|
20
|
|
|
#3 | ||
|
Membre Expert
![]() Frédéric Brugmans Informaticien multitâche Inscription : février 2005 Messages : 661 ![]() |
avec awk
Code :
|
||
|
|
10
|
|
|
#4 | ||||
|
Expert Confirmé
![]() Inscription : janvier 2011 Messages : 970 ![]() |
Salut,
Citation:
Sinon en fonction de la version de "sed" sous Cygwin, ceci devrait passer : Code :
Citation:
__________________
$ man woman Il n'y a pas de page de manuel pour woman. |
||||
|
|
10
|
|
|
#5 |
|
Invité de passage
![]() Inscription : décembre 2008 Messages : 14 ![]() |
Bonjour,
Tout d'abord merci pour la rapidité et surtout pour la simplicité de la réponse ! Je me voyais déja avec une tartine de ligne, et quand j'ai vu vos réponse .... Enfin bref, merci pour le awk également, cette commande me fesais peur mais en fin de compte pour erffectuer la manipulation désirée, elle est assez explicite. Je vais maintenant tester tout cela sur mon fichier. |
|
|
00
|
|
|
#6 | ||||
|
Membre Expert
![]() |
Bien sûr que si... décidément, j'enchaîne les boulettes ces temps ci
(soit dit en passant, je trouve dommage qu'aucun de mes 2 messages totalement erronés n'aient de votes négatifs alors que d'autres messages pourtant corrects en ont...)D'ailleurs, je ne suis même pas certain que \d fonctionne... en tout cas, chez moi ça ne marche pas Et sous windows, tu ne peux pas utiliser les ' A force de mélanger perl et sed... Code :
Code :
echo "IP;logname;13/06/2011;url" | sed 's#;\([0-9][0-9]\)/\([0-9][0-9]\)/\([0-9][0-9][0-9][0-9]\);#;\3/\2/\1;#' Code :
|
||||
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : décembre 2008 Messages : 14 ![]() |
Merci pour ces compléments de réponse,
Voici la commande pour laquelle j'ai opté qui permet donc d'effectuer cette permutation au sein d'un fichier : Code :
sed -r 's#(..)/(...)/(....)#\3/\2/\1#' fich |
|
|
00
|
|
|
#8 | |
|
Expert Confirmé
![]() Inscription : janvier 2011 Messages : 970 ![]() |
Citation:
__________________
$ man woman Il n'y a pas de page de manuel pour woman. |
|
|
|
10
|
Copyright © 2000-2012 - www.developpez.com