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 :

Modification chaîne sed


Sujet :

Shell et commandes POSIX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Chef projet IT
    Inscrit en
    Mars 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chef projet IT

    Informations forums :
    Inscription : Mars 2018
    Messages : 4
    Par défaut Modification chaîne sed
    Bonjour à tous,
    J’aimerais faire appel à vos talents pour résoudre une problématique que j’ai actuellement.

    Je travaille sur Une machine unix et le script dans lequel je souhaite insérer la commande de modifications est en ksh..

    Il y’a différents traitements dans ce script et j’aimerais y ajouter une fonctionnalité.

    J’ai un fichier composé de plusieurs lignes de longueur fixe 30 caractères

    Chaque ligne commence par une lettre suivi d’un chiffre et 2 espaces, ensuite une succession de chiffre et lettre. Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    A1  91190abc76TEST878    67890U
    A2  75150cdc87JEUX767    765896
    Donc ce que je cherche à faire c’est :
    - si la 1er ligne débute par A1 et 2 espaces
    Alors si en position 15 j’ai la chaîne TEST
    Alors si en position 23 j’ai 3 espace vide
    Je remplace cette zone par AIX

    J’arrive à récupérer la 1er ligne avec une commande head, les différentes zones de tests avec des cut mais impossible de modifier la ligne avec un sed..
    Je pense même que tout doit pouvoir être fait avec un sed mais je n’arrive pas à faire la commande
    J’en suis à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i*«*.save.modif*» -r1(^A1  (.{14})TEST/
    Je sèche pour la suite et indique la position de la modif..

    Donc si quelques pouvait m’aider sur le sujet ça serait sympa ..

    Merci à vous

  2. #2
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 354
    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 354
    Par défaut
    Bonjour,

    Le sed en question ressemble à ça (pas testé) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed '1s/^\(A1 .\{11\}TEST.\{4\}\)   /\1AIX/' fichier
    s'il fonctionne, reste plus qu'à rajouter l'option -i pour la modification du fichier.

  3. #3
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 293
    Par défaut
    Bonjour

    Attention, le forum a mangé un espace après A1, n'en laissant qu'un.

  4. #4
    Candidat au Club
    Homme Profil pro
    Chef projet IT
    Inscrit en
    Mars 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chef projet IT

    Informations forums :
    Inscription : Mars 2018
    Messages : 4
    Par défaut
    Salut,
    je viens de tester la commande et j'ai une erreur..

    Je l'ai mise dans un remplace.sh :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #!/bin/ksh
    sed '1s/^\A1  .\{11\}TEST.\{4\}\)    /\1AIX/' fichier
    exit 0
    et j'ai le message d'erreur suivant au lancement du fichier
    ./remplace.sh

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed: Function 1s/^\A1  .\{11\}TEST.\{4\}\)    /\1AIX/ cannot be parsed.

  5. #5
    Candidat au Club
    Homme Profil pro
    Chef projet IT
    Inscrit en
    Mars 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chef projet IT

    Informations forums :
    Inscription : Mars 2018
    Messages : 4
    Par défaut
    ah non je viens de voir que je n'avais pas bien retranscrit la commande..
    Ca passe, c'est parfait je te remercie !

  6. #6
    Candidat au Club
    Homme Profil pro
    Chef projet IT
    Inscrit en
    Mars 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chef projet IT

    Informations forums :
    Inscription : Mars 2018
    Messages : 4
    Par défaut
    dernier souci, je n'arrive pas à modifier le fichier courant
    en mettant le -i, j'ai l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sed: illegal option -- i
    Usage:  sed [-n] [-u] Script [File ...]
            sed [-n] [-u] [-e Script] ... [-f Script_file] ... [File ...]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i '1s/^\(A1 .\{11\}TEST.\{4\}\)   /\1AIX/' fichier

Discussions similaires

  1. Supprimer sous-chaîne - Sed
    Par Svengali48 dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 27/10/2015, 20h16
  2. Modification chaîne de caractère
    Par linooo dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 29/06/2007, 23h24
  3. modification d'une chaîne passée en paramètre
    Par g0up1l dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 25/03/2007, 18h17
  4. Réponses: 4
    Dernier message: 04/03/2007, 13h26
  5. Modification de la propriété Chaîne vide autorisée
    Par hirochirak dans le forum Access
    Réponses: 3
    Dernier message: 11/01/2007, 10h28

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