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

blux Messages postés 27166 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 voir également:

7 réponses

jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut,
#! /bin/bash

DATE=$(date "+%d/%m/%y-%k:%M")

while read line
do
sed "s|^|$DATE |" $1 > $2
done < $1
;-))
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

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

0
blux Messages postés 27166 Date d'inscription   Statut Modérateur Dernière intervention   3 362
 
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
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570 > blux Messages postés 27166 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
blux Messages postés 27166 Date d'inscription   Statut Modérateur Dernière intervention   3 362 > lami20j Messages postés 21331 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
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637 > blux Messages postés 27166 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
blux Messages postés 27166 Date d'inscription   Statut Modérateur Dernière intervention   3 362 > dubcek Messages postés 18789 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
blux Messages postés 27166 Date d'inscription   Statut Modérateur Dernière intervention   3 362
 
Merci, je vais voir lequel est le plus adapté à mon usage.
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
essaie d'abord comme ça
perl -ne 's/^/system("date")/e;print' cfg-jb.sh
--
lami20j
0
blux Messages postés 27166 Date d'inscription   Statut Modérateur Dernière intervention   3 362
 
mar 15 mai 16:00:24 DFT 2007
0quit
mar 15 mai 16:00:24 DFT 2007
0fin
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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
blux Messages postés 27166 Date d'inscription   Statut Modérateur Dernière intervention   3 362
 
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
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
$ 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
blux Messages postés 27166 Date d'inscription   Statut Modérateur Dernière intervention   3 362
 
Merci ça le fait bien, maintenant...
0