Utilisation sed awk

Résolu
Dmouha -  
 Dmouha -
Bonjour j'ai une petit problème j ai un fichier qui contient

mot 1; ; mot1_changé
mot 2 ; ; mot_2 changé
.
.
.
mot n; ; mot n changé

entre les deux point virgule j'aimerai mettre la date a la quelle le mot a changé
j ai fait

sed -e "s/$(awk -F ";" '{print $2}' essai)/$(date)/g" mais j'ai une erreur
Sachant que je doit faire sa sur un fichier de n lignes comment s'y prendre merci de votre aide

12 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    avec awk
    $ cat a4
    mot 1; ; mot1_changé
    mot 2 ; ; mot_2 changé
    mot n; ; mot n changé
    $ 
    $ awk 'BEGIN{FS=OFS=";"};{"date"|getline x; $2=x;print}' a4
    mot 1;Thu Apr 15 15:33:52 CEST 2010; mot1_changé
    mot 2 ;Thu Apr 15 15:33:52 CEST 2010; mot_2 changé
    mot n;Thu Apr 15 15:33:52 CEST 2010; mot n changé
    $ 
    
    0
    1. Dmouha
       
      merci mais le gros problem c est qu'il le fait qu a l'affichage j'aimerais qu'il modifie le fichier merci
      0
  2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    awk ne peut pas modifier directement le fichier.
    faire
    cp fichier fichier.org
    awk 'BEGIN{FS=OFS=";"};{"date"|getline x; $2=x;print}' fichier.org > fichier
    0
  3. Dmouha
     
    Il n y a pas moyen de garder le meme fichier? ou je l'écrase alors?
    0
  4. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    tu écrases fichier.org ou alors utiliser sed
    $ cat a4
    mot 1; ; mot1_changé
    mot 2 ; ; mot_2 changé
    mot n; ; mot n changé
    $ 
    $ sed -i 's/;/;'"$(date)"'/' a4
    $ cat a4
    mot 1;Thu Apr 15 15:56:04 CEST 2010 ; mot1_changé
    mot 2 ;Thu Apr 15 15:56:04 CEST 2010 ; mot_2 changé
    mot n;Thu Apr 15 15:56:04 CEST 2010 ; mot n changé
    $ 
    
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Dmouha
     
    désolé de t'embêté mais quand l'opération s'effectu nfois la date s'inscrit n fois
    mot_in;Thu Apr 15 16:02:34 CEST 2010Thu Apr 15 16:02:26 CEST 2010; mot_chang
    0
  7. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    ben oui si tu réedites le fichier, il va remettre la date, tu veux ajouter la date seulement si elle n'y est pas ?

    essaye
    sed -i 's/;[ ]*;/;'"$(date)"';/'
    0
  8. Dmouha
     
    au début l'espace entre les deux mots est vide en l occurence

    mot1; ;mot_nvo

    aprés jr vais mettre une date

    mot1; date ;mot_nvo

    s'il a été modifié encore j'aimerais qu'il soit ainsi
    mot1; date1 ;mot_nvo2
    la date un doit être écrasé merci beaucoup de ton aide
    0
  9. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    essaye
    sed -i 's/;.*;/;'"$(date)"';/'
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Il ne faut pas qu'il y ait un autre ";" dans la ligne, sans quoi la gourmandise des regex bouffera tout ;-(
      0
    2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      comment l'éviter ?
      0
    3. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      's/;[^;]*;/;'"$(date)"';/'
      0
  10. Dmouha
     
    une dernière question si j'ai un mot1; date1;date2 pour changer le date2; j'utilise la même commande? je change juste les paramètres ? yep
    0
  11. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    essaye
    sed -i 's/;[ a-zA-Z0-9:]*/;'"$(date)"'/2'
    0
  12. Dmouha
     
    encore merci pour votre aide les amis ça marche trés bien je peux avancer now dans mon boulot
    0