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 :

Shell : substitution de caractères à une position précise.


Sujet :

Shell et commandes POSIX

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2017
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Shell : substitution de caractères à une position précise.
    Bonjour,

    Je cherche à traduire l’algorithme ci-dessous en script shell (je n y connais rien).

    Fichier INPUT : DES|0000001|76610|233019720927347|SALINES SANDRINE
    Fichier OUTPUT : DES|0000001|76610|233019720900047|XXXINES SANDRINE

    Algorithme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    cat FICHIER_INPUT | while read ligne
    do
    if 1/3="DES"
       then move "000"  to 29/3
              move "XXX" to 35/3
    fi
    Ecriture ligne dans FICHIER_OUTPUT  
    done

    Merci beaucoup.

  2. #2
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 287
    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 287
    Points : 12 744
    Points
    12 744
    Par défaut
    Bonjour,

    En fait, tu peux le faire avec une simple commande sed (si le sed de ton système le supporte) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed '/^DES/s/\(.\{28\}\)...\(.\{3\}\).../\1000\2XXX/' fichier_source >fichier_destination
    Pour cette syntaxe, il ne faut pas que le fichier_source soit aussi fichier_destination.
    Sinon, toujours selon ta version de sed, tu as le connecteur "-i" qui permet de modifier directement le fichier_source (mais avant de l'utiliser, faut vraiment être sur que cela fonctionne bien, car là, tu n'as pas de retour arrière possible) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i '/^DES/s/\(.\{28\}\)...\(.\{3\}\).../\1000\2XXX/' fichier_source
    Cordialement.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2017
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup, je testerai et vous tiendrai au courant.

Discussions similaires

  1. Réponses: 31
    Dernier message: 20/05/2009, 11h12
  2. Réponses: 6
    Dernier message: 11/02/2008, 21h33
  3. Réponses: 1
    Dernier message: 20/04/2007, 14h10
  4. ajout d'une colonne à une position précise!
    Par kanko dans le forum Oracle
    Réponses: 5
    Dernier message: 27/03/2006, 22h35
  5. aller à une position précise dans un fichier texte
    Par bassidi meryeme dans le forum Langage
    Réponses: 3
    Dernier message: 27/10/2005, 14h57

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