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 POSIX Discussion :

sed substitue dans une colonne


Sujet :

Shell et commandes POSIX

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 159
    Points : 78
    Points
    78
    Par défaut sed substitue dans une colonne
    Bonjour,
    J'ai un script qui cherche B45 et la remplace par F45 dans une ligne d'un fichier. J'ai utilisé cette commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $line | sed 's/B45/F45/g' >> $2
    Mais mon problème maintenant est que je voudrais préciser que c'est uniquement dans la colonne 10 que je dois faire cette substitution.
    Comment faire ?
    Merci de votre aide

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 805
    Points
    30 805
    Par défaut
    Peux-tu préciser ce que tu entends par colonne ?
    A partir du dixième caractère ? Ou en fonction de séparateurs de colonnes ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 159
    Points : 78
    Points
    78
    Par défaut
    C'est un fichier délimité (.csv) avec comme séparateur le |. Et j'ai besoin de faire la subsitution dans la colonne 17.
    Merci d'avance

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 805
    Points
    30 805
    Par défaut
    Utilise plutôt awk alors ; ce sera nettement plus simple
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 159
    Points : 78
    Points
    78
    Par défaut
    oui mais comment ?

  6. #6
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 286
    Points : 12 743
    Points
    12 743
    Par défaut
    Bonjour,
    Pour le changement en dixième colonne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ cat B45
    B45A|B45B|B45C|B45D|B45E|B45F|B45G|B45H|B45I|B45J|B45K|B45L|B45M|B45N|B45O|B45P|B45Q|B45R|B45S|B45T|B45U|B45V|B45W|B45X|B45Y|B45Z|
    B45a|B45b|B45c|B45d|B45e|B45f|B45g|B45h|B45i|B45jB45ggB45HH|B45k|B45l|B45m|B45n|B45o|B45p|B45q|B45r|B45s|B45t|B45u|B45v|B45w|B45x|B45y|B45z|
    Methode sed la plus compatible:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ sed -e ':bcl' -e 's/^\([^|]*|[^|]*|[^|]*|[^|]*|[^|]*|[^|]*|[^|]*|[^|]*|[^|]*|\)\([^|]*\)B45\([^|]*|\)/\1\2F45\3/' -e 'tbcl' B45
    B45A|B45B|B45C|B45D|B45E|B45F|B45G|B45H|B45I|F45J|B45K|B45L|B45M|B45N|B45O|B45P|B45Q|B45R|B45S|B45T|B45U|B45V|B45W|B45X|B45Y|B45Z|
    B45a|B45b|B45c|B45d|B45e|B45f|B45g|B45h|B45i|F45jF45ggF45HH|B45k|B45l|B45m|B45n|B45o|B45p|B45q|B45r|B45s|B45t|B45u|B45v|B45w|B45x|B45y|B45z|
    Methode sed identique mais qui supporte l'énumération:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ sed -e ':bcl' -e 's/^\(\([^|]*|\)\{9\}\)\([^|]*\)B45\([^|]*|\)/\1\3F45\4/' -e 'tbcl' B45
    B45A|B45B|B45C|B45D|B45E|B45F|B45G|B45H|B45I|F45J|B45K|B45L|B45M|B45N|B45O|B45P|B45Q|B45R|B45S|B45T|B45U|B45V|B45W|B45X|B45Y|B45Z|
    B45a|B45b|B45c|B45d|B45e|B45f|B45g|B45h|B45i|F45jF45ggF45HH|B45k|B45l|B45m|B45n|B45o|B45p|B45q|B45r|B45s|B45t|B45u|B45v|B45w|B45x|B45y|B45z|
    Une methode awk:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ awk -F\| '{gsub("B45","F45",$10); print}' B45
    B45A B45B B45C B45D B45E B45F B45G B45H B45I F45J B45K B45L B45M B45N B45O B45P B45Q B45R B45S B45T B45U B45V B45W B45X B45Y B45Z
    B45a B45b B45c B45d B45e B45f B45g B45h B45i F45jF45ggF45HH B45k B45l B45m B45n B45o B45p B45q B45r B45s B45t B45u B45v B45w B45x B45y B45z
    Cordialement.

Discussions similaires

  1. Postionnement dans une colonne dans un DBGrid
    Par Jeankiki dans le forum Bases de données
    Réponses: 7
    Dernier message: 13/01/2005, 00h05
  2. [SQL7] chaines de caractères stockées dans une colonne image
    Par fredoche dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 26/11/2004, 11h12
  3. INTERBASE 5.5 insertion dans une colonne BLOB
    Par mariustrezor dans le forum Bases de données
    Réponses: 4
    Dernier message: 29/10/2004, 18h06
  4. Noms de colonne dans une colonne
    Par Digirom dans le forum Langage SQL
    Réponses: 14
    Dernier message: 23/04/2004, 11h51
  5. intervertir les valeurs dans une colonne d'une table
    Par hammou dans le forum Débuter
    Réponses: 2
    Dernier message: 26/01/2004, 10h15

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