[Shell-Perl]-Ajouter données en tête de ligne

blux Messages postés 5044 Date d'inscription   Statut Modérateur Dernière intervention   -  
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

je cherche un petit script (sous UNIX/AIX, mais ultra-rapide) pour rajouter la date et heure du jour à toutes les lignes d'un fichier redirigé vers un autre :

cat $1 >> toto.log

Merci de vos suggestions.

--
A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Configuration: Windows XP
Firefox 1.5.0.11

7 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,
    #! /bin/bash
    
    DATE=$(date "+%d/%m/%y-%k:%M")
    
    while read line
    do
    sed "s|^|$DATE |" $1 > $2
    done < $1
    ;-))
    0
  2. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    je n'ai pas testé
    cat fichier | perl -ne 's/^/system("date", "+%d/%m/%y-%k:%M") . " :" /e';print' >> fichier.log

    0
    1. blux Messages postés 5044 Date d'inscription   Statut Modérateur Dernière intervention   3 455
       
      Après avoir supprimé le ' après print, il ne m'imprime rien en sortie (je teste sans la redirection)...
      cat cfg-jb.sh | perl -ne 's/^/system("date", "+%y%m%d-%H%M%S").":"/e';print
      0
    2. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571 > blux Messages postés 5044 Date d'inscription   Statut Modérateur Dernière intervention  
       
      c'est moi qui s'est trompé :-))

      cat fichier | perl -ne 's/^/system("date", "+%d/%m/%y-%k:%M") . " :" /e;print' >> fichier.log


      c'est l'apostrophe e qu'il fallait supprimer
      0
    3. blux Messages postés 5044 Date d'inscription   Statut Modérateur Dernière intervention   3 455 > lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention  
       
      Presque !

      070515-144512
      0:quit
      070515-144512
      0:fin

      Je sais pas d'où sort le crlf+zéro ! J'ai essayé aussi sans la concaténation du :, mais c'est pareil, j'ai un crlf+0
      cat cfg-jb.sh  | perl -ne 's/^/system("date", "+%y%m%d-%H%M%S") . ":"/e;print'
      
      --
      A+ Blux
       "Les cons, ça ose tout.
      C'est même à ça qu'on les reconnait"
      0
    4. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660 > blux Messages postés 5044 Date d'inscription   Statut Modérateur Dernière intervention  
       
      il faut rajouter \c dans le format de la date pour rester sur la ligne

      cat cfg-jb.sh | perl -ne 's/^/system("date", "+%y%m%d-%H%M%S\c") . ":"/e;print'
      0
    5. blux Messages postés 5044 Date d'inscription   Statut Modérateur Dernière intervention   3 455 > dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Non plus (pas chez moi, en tous cas) :
       cat cfg-jb.sh  | perl -ne 's/^/system("date", "+%y%m%d-%H%M%S\c") . ":"/e;print'
      syntax error at -e line 1, at EOF
      Unmatched right curly bracket at -e line 1, within string
      Missing right curly or square bracket at -e line 1, at end of line
      syntax error at -e line 1, at EOF
      Execution of -e aborted due to compilation errors.
      0
  3. blux Messages postés 5044 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    Merci, je vais voir lequel est le plus adapté à mon usage.
    0
  4. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    essaie d'abord comme ça
    perl -ne 's/^/system("date")/e;print' cfg-jb.sh
    --
    lami20j
    0
    1. blux Messages postés 5044 Date d'inscription   Statut Modérateur Dernière intervention   3 455
       
      mar 15 mai 16:00:24 DFT 2007
      0quit
      mar 15 mai 16:00:24 DFT 2007
      0fin
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    et ça?
    je suis au boulot et je ne peux pas tester ce que j'écrit
    perl -ne ' print system("date") . " $_"' cfg-jb.sh
    --
    lami20j
    0
  7. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Voilà la solution en Perl
    lami20j@debian:~/trash$ cat fichier
    ligne 1
    ligne 2
    ligne 3
    ligne 4
    ligne 5
    ligne 6
    ligne 7
    ligne 8
    ligne 9
    ligne 10
    $ perl -ne '$t=qx/date +%y%m%d-%H%M%S/;chomp($t);print $t . "> $_"' fichier
    070515-195405> ligne 1
    070515-195405> ligne 2
    070515-195405> ligne 3
    070515-195405> ligne 4
    070515-195405> ligne 5
    070515-195405> ligne 6
    070515-195405> ligne 7
    070515-195405> ligne 8
    070515-195405> ligne 9
    070515-195405> ligne 10
    
    ou avec les apostrophes inverses
    $ perl -ne '$t=`date +%y%m%d-%H%M%S`;chomp($t);print $t . "> $_"' fichier
    070515-195618> ligne 1
    070515-195618> ligne 2
    070515-195618> ligne 3
    070515-195618> ligne 4
    070515-195618> ligne 5
    070515-195618> ligne 6
    070515-195618> ligne 7
    070515-195618> ligne 8
    070515-195618> ligne 9
    070515-195618> ligne 10
    
    0
    1. blux Messages postés 5044 Date d'inscription   Statut Modérateur Dernière intervention   3 455
       
      Ca marche aussi si le fichier vient d'un cat $1 (voir message 17) ? car je n'ai pas le choix du type d'entrée :-(
      C'est un programme pour lequel je dois traiter les logs qui sont envoyés sous la forme $1 au cours de son exécution...
      0
  8. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    $ cat fichier
    ligne 1
    ligne 2
    ligne 3
    ligne 4
    ligne 5
    ligne 6
    ligne 7
    ligne 8
    ligne 9
    ligne 10
    $ cat fichier | perl -ne '$t=qx/date +%y%m%d-%H%M%S/;chomp($t);print $t . "> $_"'
    070515-221224> ligne 1
    070515-221224> ligne 2
    070515-221224> ligne 3
    070515-221224> ligne 4
    070515-221224> ligne 5
    070515-221224> ligne 6
    070515-221224> ligne 7
    070515-221224> ligne 8
    070515-221224> ligne 9
    070515-221224> ligne 10
    $ cat blux.sh
    #!/bin/bash
    
    cat $1 | perl -ne '$t=qx/date +%y%m%d-%H%M%S/;chomp($t);print $t . "> $_"'
    $ sh blux.sh fichier
    070515-221336> ligne 1
    070515-221336> ligne 2
    070515-221336> ligne 3
    070515-221336> ligne 4
    070515-221336> ligne 5
    070515-221336> ligne 6
    070515-221336> ligne 7
    070515-221336> ligne 8
    070515-221336> ligne 9
    070515-221336> ligne 10

    0
    1. blux Messages postés 5044 Date d'inscription   Statut Modérateur Dernière intervention   3 455
       
      Merci ça le fait bien, maintenant...
      0