Script shell qui ajoute un entete et un pied

Résolu/Fermé
mlkndiaye - 28 mai 2010 à 17:10
 mlkndiaye - 29 mai 2010 à 16:50
Bonjour,

je veux script shell qui ajoute un entete et un pied de page dans mon fichier cad:

mon fichier
fich1:
85884769370|030|01800|Moussa |sarr|01061982|SAINT LOUIS|17052010|AZUR|001|
08235367539|050|02900|Bassirou |DILLO|13081967|LOUGA|17052010|VSEIMM|003|
98545784521|051|02000|Babacar |DOUMBIA|31121955|THIES|17052010|||
53677448920|060|03500|Fatou |SILLA|27101965|COTE IVOIRE|17052010|VSPDEF|006|
15566728777|070|01700|ALI |DIOP|29031975|MALI|17052010|VSCDEF|008|
77992939257|071|00700|Bintou |NDIAYE|24041973|DAKAR|17052010|VSVIMM|009|

je veux avoir dans mon fichier:

fich2:
CECI EST L'ENTETE CREER LE : DATE
85884769370|030|01800|Moussa |sarr|01061982|SAINT LOUIS|17052010|AZUR|001|
08235367539|050|02900|Bassirou |DILLO|13081967|LOUGA|17052010|VSEIMM|003|
98545784521|051|02000|Babacar |DOUMBIA|31121955|THIES|17052010|||
53677448920|060|03500|Fatou |SILLA|27101965|COTE IVOIRE|17052010|VSPDEF|006|
15566728777|070|01700|ALI |DIOP|29031975|MALI|17052010|VSCDEF|008|
77992939257|071|00700|Bintou |NDIAYE|24041973|DAKAR|17052010|VSVIMM|009|
CECI EST LE PIED DE PAGE - NOMBRE DE LIGNE: NOMBRE

NB:
- La date sera le quantieme du jour exemple aujourd'hui: 2010148
- Nombre de ligne:6

A voir également:

3 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 894
28 mai 2010 à 18:37
Salut,

$ DATE="CECI EST L'ENTETE CREER LE : $(date '+%Y%j')"
$ NBR="CECI EST LE PIED DE PAGE - NOMBRE DE LIGNE : $(cat fich1 | wc -l)"
$ sed '1 s/.*/'"$DATE"'\n&/;$ s/.*/&\n'"$NBR"'/' fich1 > fich2
0
ca marche mais il ne se met pas au bon endroit
voir ci-desous
fich2:
CECI EST L'ENTETE CREER LE : 2010148n85884769370|030|01800|Moussa |sarr|01061982|SAINT LOUIS|17052010|AZUR|001|
08235367539|050|02900|Bassirou |DILLO|13081967|LOUGA|17052010|VSEIMM|003|
98545784521|051|02000|Babacar |DOUMBIA|31121955|THIES|17052010|||
53677448920|060|03500|Fatou |SILLA|27101965|COTE IVOIRE|17052010|VSPDEF|006|
15566728777|070|01700|ALI |DIOP|29031975|MALI|17052010|VSCDEF|008|
77992939257|071|00700|Bintou |NDIAYE|24041973|DAKAR|17052010|VSVIMM|009|nCECI EST LE PIED DE PAGE - NOMBRE DE LIGNE : 6

remarque: il y a un 'n' qui s'affiche apres l'entete et avant le pied de page

je veux voir ca:

CECI EST L'ENTETE CREER LE : 2010148
85884769370|030|01800|Moussa |sarr|01061982|SAINT LOUIS|17052010|AZUR|001|
08235367539|050|02900|Bassirou |DILLO|13081967|LOUGA|17052010|VSEIMM|003|
98545784521|051|02000|Babacar |DOUMBIA|31121955|THIES|17052010|||
53677448920|060|03500|Fatou |SILLA|27101965|COTE IVOIRE|17052010|VSPDEF|006|
15566728777|070|01700|ALI |DIOP|29031975|MALI|17052010|VSCDEF|008|
77992939257|071|00700|Bintou |NDIAYE|24041973|DAKAR|17052010|VSVIMM|009|
CECI EST LE PIED DE PAGE - NOMBRE DE LIGNE : 6
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894
28 mai 2010 à 19:06
Affiche la commande que tu tapes s'il te plait.

La syntaxe a toute son importance au niveau des quotes et des anti-slashs !!!

Chez moi ça passe sans souci ;-\
0
MERCI, parfait !
0
voici ce que j'ai !!

D:\APBATCH\scripts\new_ok1\entete_fich>sh entete.sh
CECI EST L'ENTETE CREER LE : 2010148n85884769370|030|01800|Moussa |sarr|01061982
|SAINT LOUIS|17052010|AZUR|001|
08235367539|050|02900|Bassirou |DILLO|13081967|LOUGA|17052010|VSEIMM|003|
98545784521|051|02000|Babacar |DOUMBIA|31121955|THIES|17052010|||
53677448920|060|03500|Fatou |SILLA|27101965|COTE IVOIRE|17052010|VSPDEF|006|
15566728777|070|01700|ALI |DIOP|29031975|MALI|17052010|VSCDEF|008|
77992939257|071|00700|Bintou |NDIAYE|24041973|DAKAR|17052010|VSVIMM|009|nCECI ES
T LE PIED DE PAGE - NOMBRE DE LIGNE : 5

D:\APBATCH\scripts\new_ok1\entete_fich>PAUSE
Appuyez sur une touche pour continuer...
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894
28 mai 2010 à 19:57
T'es sous Windows là ?
0
oui, j'ai installe le mks
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894
28 mai 2010 à 20:22
Remplace le "\n" par "\r".
0
j'ai tjr le meme resultat


D:\APBATCH\scripts\new_ok1\entete_fich>sh entete.sh
CECI EST L'ENTETE CREER LE : 2010148r85884769370|030|01800|Moussa |sarr|01061982
|SAINT LOUIS|17052010|AZUR|001|
08235367539|050|02900|Bassirou |DILLO|13081967|LOUGA|17052010|VSEIMM|003|
98545784521|051|02000|Babacar |DOUMBIA|31121955|THIES|17052010|||
53677448920|060|03500|Fatou |SILLA|27101965|COTE IVOIRE|17052010|VSPDEF|006|
15566728777|070|01700|ALI |DIOP|29031975|MALI|17052010|VSCDEF|008|
77992939257|071|00700|Bintou |NDIAYE|24041973|DAKAR|17052010|VSVIMM|009|rCECI ES
T LE PIED DE PAGE - NOMBRE DE LIGNE : 5

D:\APBATCH\scripts\new_ok1\entete_fich>PAUSE
Appuyez sur une touche pour continuer...


le script:
#!/bin/bash

DATE="CECI EST L'ENTETE CREER LE : $(date '+%Y%j')"
NBR="CECI EST LE PIED DE PAGE - NOMBRE DE LIGNE : $(cat fich1 | wc -l)"
sed '1 s/.*/'"$DATE"'\r&/;$ s/.*/&\r'"$NBR"'/' fich1
0
Alternative awk:

awk -v h="Date: $(date)" 'BEGIN{print h}{print}END{print "Nombre de lignes: " NR}' fichier1 > fichier2
0
merci ca marche tres bien.
0