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 :

Question sur un cut/paste dans un même fichier


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 20
    Par défaut Question sur un cut/paste dans un même fichier
    Bonjour à tous,

    Je souhaite copier le contenu de la première colonne d'un fichier, pour le fusionner au contenu de la dernière colonne.

    A partir de l'exemple suivant :

    Marc Dupont Toulouse 31
    Paul Durand Bordeaux 33
    Eric Michel Paris 75

    (Les séparations sont des tabulations).

    Mon but est d'obtenir :

    Marc Dupont Toulouse 31Marc
    Paul Durand Bordeaux 33Paul
    Eric Michel Paris 75Eric

    Malgrés mes recherches dans les manuels utilisateurs, je n'ai pas réussi à combiner un cut avec un paste et avoir le résultat dans une des colonnes.

    Merci,
    Lucie.

  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,

    Avec "awk" ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $ cat plop 
    Marc	Dupont	Toulouse	31
    Paul	Durand	Bordeaux	33
    Eric	Michel	Paris	75
     
    $ awk -F'\t' '{ printf $0$1"\n" }' plop 
    Marc	Dupont	Toulouse	31Marc
    Paul	Durand	Bordeaux	33Paul
    Eric	Michel	Paris	75Eric
     
    $

  3. #3
    Membre averti
    Inscrit en
    Décembre 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 20
    Par défaut
    Citation Envoyé par zipe31 Voir le message
    Salut,

    Avec "awk" ?


    $ awk -F'\t' '{ printf $0$1"\n" }' plop
    Marc Dupont Toulouse 31Marc
    Paul Durand Bordeaux 33Paul
    Eric Michel Paris 75Eric

    $[/code]
    C'est nickel, merci

    Est-ce que l'opération inverse est possible, à savoir enlever le contenue de la première colonne au contenu de la dernière ?

    Et retrouver :
    Marc Dupont Toulouse 31
    Paul Durand Bordeaux 33
    Eric Michel Paris 75

    L.

  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
    Citation Envoyé par dlm64 Voir le message
    Est-ce que l'opération inverse est possible, à savoir enlever le contenue de la première colonne au contenu de la dernière ?
    Oui :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $ cat fich 
    Marc	Dupont	Toulouse	31Marc
    Paul	Durand	Bordeaux	33Paul
    Eric	Michel	Paris	75Eric
     
    $ sed -r 's/([^ ]*)(.*)\1/\1\2/' fich 
    Marc	Dupont	Toulouse	31
    Paul	Durand	Bordeaux	33
    Eric	Michel	Paris	75
     
    $

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk -F'\t' '{sub($1,"",$NF)}1' fichier.in
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Membre averti
    Inscrit en
    Décembre 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 20
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk -F'\t' '{sub($1,"",$NF)}1' fichier.in
    idem avec le awk ..

  7. #7
    Membre averti
    Inscrit en
    Décembre 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 20
    Par défaut
    Citation Envoyé par zipe31 Voir le message
    Oui :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $ sed -r 's/([^ ]*)(.*)\1/\1\2/' fich 
    $
    Ha là, ça ne fonctionne pas ..
    Pour la mise en forme, mon fichier ressemble plutôt à cela :

    ___Marc Dupont Toulouse 31___Marc
    ___Paul Durand Bordeaux 33___Paul
    ___Eric Michel Paris 75___Eric

    Ou ___ sont trois espaces (ça ne se voit pas sur le site)
    Du coup, il faut que j'intègre les 3 espaces dans la première colonne ..

  8. #8
    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 dlm64 Voir le message
    Ha là, ça ne fonctionne pas ..
    Pour la mise en forme, mon fichier ressemble plutôt à cela :

    ___Marc Dupont Toulouse 31___Marc
    ___Paul Durand Bordeaux 33___Paul
    ___Eric Michel Paris 75___Eric

    Ou ___ sont trois espaces (ça ne se voit pas sur le site)
    Du coup, il faut que j'intègre les 3 espaces dans la première colonne ..
    Avec un exemple entre balises "[code]" et "[/code]",le bon format de fichier et toutes les données nécessaires à la bonne compréhension du problème, on éviterait pas mal d'aléas sans compter les pertes de temps

    Avec cette syntaxe sed -r 's/([^\t]*)(.*)\1/\1\2/' ça devrait aller mieux

    J'ai juste remplacer l'espace vide de la 1ère référence arrière par une tabulation (\t).

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    Bonjour,

    en bash :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    paste -d '' fichier.in <(cut -d ' ' -f1 fichier.in)
    sinon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cut -d ' ' -f1 fichier.in | paste -d '' fichier.in -
    le séparateur du cut est obtenu avec Ctrl-V Ctrl-I
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/02/2009, 10h34
  2. [Delphi 7] Question sur le CTRL-Click dans l'EDI
    Par MiJack dans le forum Delphi
    Réponses: 2
    Dernier message: 07/11/2006, 22h06
  3. Question sur une relation ternaire dans un MCD
    Par sylsau dans le forum Schéma
    Réponses: 5
    Dernier message: 05/03/2006, 20h00

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