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

Fermé
blux Messages postés 26034 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 13 mai 2024 - 15 mai 2007 à 11:32
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 16 mai 2007 à 13:35
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
15 mai 2007 à 12:21
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 jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
15 mai 2007 à 12:31
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 26034 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 13 mai 2024 3 289
15 mai 2007 à 13:46
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 jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567 > blux Messages postés 26034 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 13 mai 2024
15 mai 2007 à 14:33
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 26034 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 13 mai 2024 3 289 > lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019
15 mai 2007 à 14:49
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 18723 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 11 mai 2024 5 615 > blux Messages postés 26034 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 13 mai 2024
15 mai 2007 à 14:54
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 26034 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 13 mai 2024 3 289 > dubcek Messages postés 18723 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 11 mai 2024
15 mai 2007 à 15:04
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 26034 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 13 mai 2024 3 289
15 mai 2007 à 12:50
Merci, je vais voir lequel est le plus adapté à mon usage.
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
15 mai 2007 à 15:59
essaie d'abord comme ça
perl -ne 's/^/system("date")/e;print' cfg-jb.sh
--
lami20j
0
blux Messages postés 26034 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 13 mai 2024 3 289
15 mai 2007 à 16:01
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 jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
15 mai 2007 à 16:06
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 jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
15 mai 2007 à 19:51
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 26034 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 13 mai 2024 3 289
15 mai 2007 à 22:05
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 jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
15 mai 2007 à 22:10
$ 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 26034 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 13 mai 2024 3 289
16 mai 2007 à 13:12
Merci ça le fait bien, maintenant...
0