Script shell qui ajoute un entete et un pied

Résolu
mlkndiaye -  
 mlkndiaye -
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

3 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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
    1. mlkndiaye
       
      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
    2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      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
  2. mlkndiaye
     
    MERCI, parfait !
    0
    1. mlkndiaye
       
      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
    2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      T'es sous Windows là ?
      0
    3. mlkndiaye
       
      oui, j'ai installe le mks
      0
    4. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Remplace le "\n" par "\r".
      0
    5. mlkndiaye
       
      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
  3. ripat
     
    Alternative awk:

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