IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Formatage de fichier avec Sed


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 19
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
       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 !

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,

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

    Au final ça doit ressembler à 45648 5 7 78746 ceci est une phrase 7 ?

  3. #3
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    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 : 5 196
    Par défaut
    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)

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    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

  5. #5
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    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 : 5 196
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    sed 's/\{[0-9]\}\ \{[0-9]\}/\1\2/'
    ça irai mieux là déjà

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Citation Envoyé par frp31 Voir le message
    ah oui j'ai oublié de quotter....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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>


  7. #7
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 654
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 654
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 19
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -r 's/^ *//;s/ {2,}/;/g'
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -ri 's/^ *//;s/ {2,}/;/g' monfichier
    ?

    Merci !

  9. #9
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    
    $

Discussions similaires

  1. Supprimer les premières lignes d'un fichier avec sed
    Par Tchupacabra dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 03/10/2013, 17h38
  2. Rechercher plusieurs mots dans un fichier avec sed
    Par DevServlet dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 26/01/2012, 14h40
  3. copie contenu d'un fichier dans un autre fichier avec sed
    Par zorooo dans le forum Shell et commandes GNU
    Réponses: 14
    Dernier message: 18/01/2010, 09h17
  4. problème formatage de fichier avec awk
    Par nenekes dans le forum Shell et commandes GNU
    Réponses: 16
    Dernier message: 02/11/2006, 12h53
  5. Formatage de fichier avec awk
    Par sam56 dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 12/10/2006, 11h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo