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

Linux Discussion :

Remplacer position dans un fichier


Sujet :

Linux

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2008
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Septembre 2008
    Messages : 99
    Points : 52
    Points
    52
    Par défaut Remplacer position dans un fichier
    Bonjour,

    Je cherche une commande linux capable de remplacer un caractère donné (selon une position) dans un fichier.

    Exemple :
    ABCDEFGHIJ -> remplacer la position 3 par 'espace'
    AB DEFGHIJ -> résultat.

    J'aimerai bien que toutes les lignes de mon fichier soient traitées

    Je suis débutant dans Le monde Linux.

    Si quelqu'un peut m'aider ca serai sympa !

    Merci d'avance

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 587
    Points : 19 470
    Points
    19 470
    Par défaut
    Bonjour,

    man cut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $ cat >menakikou.in
    abcdefghij
    abcdefghijk
    abcdefghijkl
    abcdefghijklm
     
    $ cut -c1-2,4- --output-delimiter=' ' <menakikou.in 
    ab defghij
    ab defghijk
    ab defghijkl
    ab defghijklm

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2008
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Septembre 2008
    Messages : 99
    Points : 52
    Points
    52
    Par défaut Remplacer position dans un fichier
    Merci pour la réponse.

    J'aurais souhaiter le réaliser avec un sed , je suis en train de me documenter et je vais à mon rythme.

    En fait, je voudrais remplacer dans mon fichier en entrée , la position 54 par Z, dans le cas où dans la position 54 est un blanc. donc il y a une condition à rajouter.

    Aurais tu une idée ?! Merci

  4. #4
    Expert éminent

    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
    Points : 6 276
    Points
    6 276
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed 's/\(.\{53\}\) /\1Z/' fichier

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2008
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Septembre 2008
    Messages : 99
    Points : 52
    Points
    52
    Par défaut Remplacer position dans un fichier
    Merci

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2008
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Septembre 2008
    Messages : 99
    Points : 52
    Points
    52
    Par défaut Remplacer position dans un fichier
    Ca ne fonctionne pas .

    voila ce que j'ai en entrée :

    VLACTRNG R000180999 20070413 000180000 400087116 D400087W1US 1US AA

    je voudrais que ca devienne :
    VLACTRNG R000180999 20070413 000180000 400087116ZD400087W1US 1US AA

    Car entre le 400087116 et D400087W1US il y a un blanc .

  7. #7
    Expert éminent

    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
    Points : 6 276
    Points
    6 276
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $ echo $A
    VLACTRNG R000180999 20070413 000180000 400087116 D400087W1US 1US AA
     
    $ echo $A | sed 's/\(.\{48\}\) /\1Z/'
    VLACTRNG R000180999 20070413 000180000 400087116ZD400087W1US 1US AA
     
    $ sed 's/ /Z/5' <<<$A
    VLACTRNG R000180999 20070413 000180000 400087116ZD400087W1US 1US AA
     
    $

  8. #8
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2008
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Septembre 2008
    Messages : 99
    Points : 52
    Points
    52
    Par défaut Remplacer position dans un fichier
    Merci it works now

  9. #9
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2008
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Septembre 2008
    Messages : 99
    Points : 52
    Points
    52
    Par défaut Remplacer position dans un fichier
    Bonjour,

    Je suis de retour ,

    j'ai re-testé la commande est en effet quand la position 54 est vide, la commande remplace bien par le caractère Z, par contre si à la position 54 il y a déja un caractère et bien le caractère Z est ajouté aléatoirement .

    Voici un exemple:
    pour cette ligne en entrée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VLACTRNG  R400861999   20111031 400861000   400861116 D455740W6SAZA6SA        L
    on a bien en sortie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VLACTRNG  R400861999   20111031 400861000   400861116ZD455740W6SAZA6SA        L
    par contre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VLACTRNG  R400848999   20071012 400848000   400848016BD400088W1USZ 1US      AAG2
    Normalement , vu que dans la position 54 , il y a déja un caractère , la commande ne devrait pas rajouter de Z , et en sortie j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VLACTRNG  R400848999   20071012 400848000   400848016BD400088W1USZZ1US      AAG2

    La commande étant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed 's/\(.\{48\}\) /\1Z/'
    Pourriez vous m'aider svp !!

    Merci d'avance

  10. #10
    Expert éminent

    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
    Points : 6 276
    Points
    6 276
    Par défaut
    Re-

    Oups il suffit de rajouter "^" en début de syntaxe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ cat plop 
    VLACTRNG  R400861999   20111031 400861000   400861116 D455740W6SAZA6SA        L
    VLACTRNG  R400848999   20071012 400848000   400848016BD400088W1USZ 1US      AAG2
     
    $ sed 's/^\(.\{53\}\) /\1Z/' plop 
    VLACTRNG  R400861999   20111031 400861000   400861116ZD455740W6SAZA6SA        L
    VLACTRNG  R400848999   20071012 400848000   400848016BD400088W1USZ 1US      AAG2

  11. #11
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2008
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Septembre 2008
    Messages : 99
    Points : 52
    Points
    52
    Par défaut Remplacer position dans un fichier
    Merci pour la réponse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $ cat plop 
    VLACTRNG  R400861999   20111031 400861000   400861116 D455740W6SAZA6SA        L
    VLACTRNG  R400848999   20071012 400848000   400848016BD400088W1USZ 1US      AAG2
     
    $ sed 's/^\(.\{48\}\) /\1Z/' plop 
    VLACTRNG  R400861999   20111031 400861000   400861116 D455740W6SAZA6SA        L
    VLACTRNG  R400848999   20071012 400848000   400848016BD400088W1USZ 1US      AAG2
    La commande n'a pas remplacé l'espace par Z dans la première ligne !
    La ligne est celle ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VLACTRNG  R400861999   20111031 400861000   400861116 D455740W6SAZA6SA        L
    En position 54 , il reste toujours un blanc or ca devrait le remplacer par Z !!

    Je suis un peu perdu !!

    Help please

  12. #12
    Expert éminent

    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
    Points : 6 276
    Points
    6 276
    Par défaut
    Je n'avais pas copié/collé le bon exemple

    J'étais parti sur ton exemple de syntaxe sed sur 48 caractères. Entre temps j'ai corrigé avec 53, ça devrait aller mieux maintenant

  13. #13
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2008
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Septembre 2008
    Messages : 99
    Points : 52
    Points
    52
    Par défaut Remplacer position dans un fichier
    Merci

    Je viens de tester celle ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed 's/^\(.\{53\}\) /\1Z/'
    It works now !!

    Je vais voir les cas particulier pour m'assurer que ca marche dans tous les cas !

    Merci encore

Discussions similaires

  1. remplacer mots dans un fichier
    Par berg dans le forum Langage
    Réponses: 9
    Dernier message: 30/03/2008, 23h29
  2. Position dans un fichier
    Par DarkIndra dans le forum C
    Réponses: 15
    Dernier message: 04/07/2007, 11h18
  3. [RegEx] Remplacement rapide dans un fichier texte (RTF)
    Par johweb dans le forum Langage
    Réponses: 12
    Dernier message: 17/01/2007, 09h04
  4. Réponses: 5
    Dernier message: 20/02/2005, 01h14
  5. [Win32] Position dans un fichier
    Par vecchio dans le forum Windows
    Réponses: 7
    Dernier message: 22/03/2004, 16h47

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