Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/06/2011, 16h35   #1
Invité de passage
 
Inscription : mai 2007
Messages : 19
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 19
Points : 4
Points : 4
Par défaut Formatage de fichier avec Sed

Bonjour,

j'ai un peu cherché sur le net avant de me résoudre à poser ma question mais comme je n'ai pas trouvé ce que je voulais, je me tourne vers ce forum. Alors voila

j'ai un fichier constitué de plusieurs lignes de ce type

Code :
   45648	                 5	                   7	                      	          	   78746	ceci est une phrase	                  	         7

ce fichier provient d'un spool via sql plus, le séparateur de colonne est une tabulation. Je voudrais supprimer tous les espaces de chaque lignes, sauf au niveau du texte. J'ai réussi à tous les supprimer mais la phrase sans espaces c'était pas terrible. Je n'y connais pas grand chose en sed (je m'en suis servi pour la première fois cette après midi) aussi je ne suis pas sur que cela soit possible mais je préfère demander,

voila, si vous avez des idées, merci !
Enishi est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/06/2011, 16h42   #2
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Salut,

Les supprimer ou les réduire à un seul espace ?

Au final ça doit ressembler à 45648 5 7 78746 ceci est une phrase 7 ?
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2011, 16h43   #3
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 534
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 534
Points : 7 743
Points : 7 743
si la colonne précédent le texte est tjrs chiffrée, tu peux te servir de ça pour ne plus effacer les espaces suivants...

supprime que les espaces compris entre des chiffres. (reste à adapter)
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/06/2011, 16h52   #4
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 070
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 070
Points : 4 153
Points : 4 153
Bonjour,

[Sed]Remplacer une série d'espaces par un délimiteur
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 21
Vieux 10/06/2011, 16h55   #5
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Salut,

Citation:
Envoyé par frp31 Voir le message
supprime que les espaces compris entre des chiffres. (reste à adapter)
Euh... t'es sûr ?

Là tu supprimes un chiffre suivi d'un espace suivi d'un chiffre, 3 caractères en fait
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 10/06/2011, 16h56   #6
Invité de passage
 
Inscription : mai 2007
Messages : 19
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 19
Points : 4
Points : 4
alors en fait avant le premier chiffre, il a 2-3 espaces que j'aimerais enlever
ensuite chaque champ doit être séparé par une tabulation et juste une tabulation donc tous les espaces doivent être supprimé sauf au niveau de la chaîne de caractère

Je vais aller lire le lien de N_BaH ^^

Edit: C'est exactement ça ! Il y a juste un truc, c'est que le dernier chiffre après la chaine, la tabulation ressemble à un espace c'est bizarre. Si je veux modifier mon fichier je dois passer
Code :
sed -r 's/^ *//;s/ {2,}/;/g'
en
Code :
sed -ri 's/^ *//;s/ {2,}/;/g' monfichier
?

Merci !
Enishi est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/06/2011, 17h03   #7
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Code :
1
2
3
4
5
6
7
$ cat fich
   45648                         5                         7                                               78746        ceci est une phrase                                      7

$ sed 's/^\s\+//;s/\s\+\([0-9]\)/\t\1/g' fich
45648   5       7       78746   ceci est une phrase     7

$
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 10/06/2011, 17h26   #8
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 534
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 534
Points : 7 743
Points : 7 743
Citation:
Envoyé par zipe31 Voir le message
Salut,



Euh... t'es sûr ?

Là tu supprimes un chiffre suivi d'un espace suivi d'un chiffre, 3 caractères en fait
ah oui j'ai oublié de quotter....

Code :
sed 's/\{[0-9]\}\ \{[0-9]\}/\1\2/'
ça irai mieux là déjà
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/06/2011, 18h56   #9
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Citation:
Envoyé par frp31 Voir le message
ah oui j'ai oublié de quotter....

Code :
sed 's/\{[0-9]\}\ \{[0-9]\}/\1\2/'
ça irai mieux là déjà
Ben toujours pas

Déjà c'est des parenthèses qu'il faut et non des accolades

Ensuite il n'y a aucun motif qui correspond à un chiffre suivi d'un espace suivi d'un autre chiffre

Et pour finir, les références arrières ne s'appliquent qu'à un motif donné. Donc là ce n'est pas cumulable, même avec le flag "g"

J'ai même essayé avec une boucle conditionnelle et même avec ça ça ne marche pas

<ModeDenisotON>
Désolé
<ModeDenisotOFF>

__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h58.


 
 
 
 
Partenaires

Hébergement Web