Formatage des données

Anouar_Genius Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
Anouar_Genius Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -
bonjour,
je suis entrain de praparer un projet shell sous linux. j'ai rencontré un problème lors du formatage d'un fichier.
je veux aboutir à une format bien déterminée:

Etat actuel :
/dev/Volume00/LogVol00
ext3 1.1GB 229MB 776MB 23% /
/dev/Volume00/LogVol05
ext3 6.8GB 34MB 6.4GB 1% /apps

Etat voulu :

/dev/Volume00/LogVol00;ext3;1.1GB;229MB;776MB;23%;/;
/dev/Volume00/LogVol05;ext3;6.8G;34MB;6.4GB;1%;/apps

2 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    [tmpfs]$ cat plop
    /dev/Volume00/LogVol00
    ext3 1.1GB 229MB 776MB 23% /
    /dev/Volume00/LogVol05
    ext3 6.8GB 34MB 6.4GB 1% /apps
    
    [tmpfs]$ sed '\#^/dev#N;s/\n/;/;s/ /;/g' plop
    /dev/Volume00/LogVol00;ext3;1.1GB;229MB;776MB;23%;/
    /dev/Volume00/LogVol05;ext3;6.8GB;34MB;6.4GB;1%;/apps
    
    [tmpfs]$

    ;-))
    1
    1. Franzux Messages postés 9705 Statut Contributeur 1 146
       
      Je serais assez preneur d'une petite explication, en particulier sur le segment \#^/dev#N;s/\n/;/; ;)
      0
    2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Salut,

      \#
      Le délimiteur de motif. Par défaut c'est un slash, mais comme de motif recherché en contient un, on en définit un nouveau (d'où la présence de l'anti-slash).


      ^/dev
      Le motif (critère) de recherche. Ici toute ligne commençant par "/dev". Le caractère "^" correspond à une chaîne nulle en début de ligne, donc ce qui se trouve après l'accent circonflexe doit apparaître en début de ligne


      #
      Délimiteur de fin de motif.


      N
      Commande demandant l'ajout dans l'espace de travail de la ligne suivant, en séparant les deux ligne par un caractère fin de ligne (\n) (Voir les commandes avancées)
      Donc si la ligne débute par "/dev", on ajoute la ligne suivante dans l'espace de travail.


      ;
      Séparateur de commande


      s/\n/;/
      On substitue les fins de ligne par un point virgule.


      ;
      0
    3. Franzux Messages postés 9705 Statut Contributeur 1 146
       
      Merci ;)
      0
    4. Anouar_Genius Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
       
      Merci beaucoup jipicy ! c'est très efficace et utile mémé pour d'autre formats. j'ai bien compris ce qui tu es entrain d'expliquer.
      0
  2. Franzux Messages postés 9705 Statut Contributeur 1 146
     
    Pour supprimer les espaces :

    franz@elenium:~/test$ cat toto
    /dev/Volume00/LogVol00
    ext3 1.1GB 229MB 776MB 23% /
    /dev/Volume00/LogVol05
    ext3 6.8GB 34MB 6.4GB 1% /apps
    franz@elenium:~/test$ cat toto | sed 's/ /;/g'
    /dev/Volume00/LogVol00
    ext3;1.1GB;229MB;776MB;23%;/
    
    0
    1. Anouar_Genius Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
       
      merci ! c'est utile aussi !!
      0