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


A voir également:

2 réponses

jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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
Franzux Messages postés 8907 Date d'inscription   Statut Contributeur Dernière intervention   1 145
 
Je serais assez preneur d'une petite explication, en particulier sur le segment \#^/dev#N;s/\n/;/; ;)
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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
Franzux Messages postés 8907 Date d'inscription   Statut Contributeur Dernière intervention   1 145
 
Merci ;)
0
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
Franzux Messages postés 8907 Date d'inscription   Statut Contributeur Dernière intervention   1 145
 
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
Anouar_Genius Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
merci ! c'est utile aussi !!
0