Utilisation sed awk

Résolu
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. encore merci pour votre aide les amis ça marche trés bien je peux avancer now dans mon boulot
    1. 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
      1. Contributeur
        essaye
        sed -i 's/;.*;/;'"$(date)"';/'
        1. Modérateur
          Il ne faut pas qu'il y ait un autre ";" dans la ligne, sans quoi la gourmandise des regex bouffera tout ;-(
        2. Contributeur
          comment l'éviter ?
        3. Modérateur
          's/;[^;]*;/;'"$(date)"';/'
      2. 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
        1. Contributeur
          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)"';/'
          1. 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
            1. Contributeur
              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é
              $ 
              
              1. Contributeur
                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
                1. Contributeur
                  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é
                  $ 
                  
                  1. merci mais le gros problem c est qu'il le fait qu a l'affichage j'aimerais qu'il modifie le fichier merci