Formatage des données

Fermé
Anouar_Genius Messages postés 3 Date d'inscription mardi 23 mars 2010 Statut Membre Dernière intervention 24 mars 2010 - 23 mars 2010 à 17:03
Anouar_Genius Messages postés 3 Date d'inscription mardi 23 mars 2010 Statut Membre Dernière intervention 24 mars 2010 - 24 mars 2010 à 10:15
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
23 mars 2010 à 18:00
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 mercredi 5 décembre 2007 Statut Contributeur Dernière intervention 27 octobre 2015 1 145
24 mars 2010 à 08:07
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
24 mars 2010 à 08:27
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 mercredi 5 décembre 2007 Statut Contributeur Dernière intervention 27 octobre 2015 1 145
24 mars 2010 à 10:10
Merci ;)
0
Anouar_Genius Messages postés 3 Date d'inscription mardi 23 mars 2010 Statut Membre Dernière intervention 24 mars 2010
24 mars 2010 à 10:15
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 mercredi 5 décembre 2007 Statut Contributeur Dernière intervention 27 octobre 2015 1 145
23 mars 2010 à 17:25
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 mardi 23 mars 2010 Statut Membre Dernière intervention 24 mars 2010
24 mars 2010 à 10:15
merci ! c'est utile aussi !!
0