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 :

Comment remplacer une chaine par une autre toutes les 10 occurence de la première chaine ?


Sujet :

Shell et commandes GNU

  1. #1
    Membre averti
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2012
    Messages : 28
    Par défaut Comment remplacer une chaine par une autre toutes les 10 occurence de la première chaine ?
    Bonjour,

    Je voudrais mettre un retour chariot toute les 10 occurences de "0xnn ".

    J'ai un fichier qui contient une seule ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    0x11 0x22 0x33 0x44 0x55 0x66 0x77 0x88 0x99 0xAA 0xBB 0xCC 0xDD 0xEE 0xFF 0x01 0x22 0x65 0x87 0x87 0x45 0x65 etc...
    et je voudrais obtenir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    0x11 0x22 0x33 0x44 0x55 0x66 0x77 0x88 0x99 0xAA
    0xBB 0xCC 0xDD 0xEE 0xFF 0x01 0x22 0x65 0x87 0x87
    0x45 0x65 etc...
    En faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sed -e "s+\( [0-9A-Fx]* [0-9A-Fx]* [0-9A-Fx]* [0-9A-Fx]* [0-9A-Fx]* [0-9A-Fx]* [0-9A-Fx]* [0-9A-Fx]* [0-9A-Fx]* [0-9A-Fx]* \)+\1\n+g"
    ça fonctionne. Mais n'y a-t-il pas une expression régulière plus simple ?

    Merci

  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,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -r 's/([^ ]* ){10}/&\n/g'

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

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

  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
    Salut,
    Citation Envoyé par N_BaH Voir le message
    <ModeFernandelON>
    Félicie(tation) aussi
    <ModeFernandelOFF>

  5. #5
    Membre averti
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2012
    Messages : 28
    Par défaut
    Super merci !
    Je connaissais pas fold, et ca répond au besoin en fait ...

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 345
    Par défaut
    Bonjour,
    Avec les données d'entrée, on doit pouvoir utiliser dd
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dd if=infile of=outfile conv=unblock cbs=50
    Cordialement.

  7. #7
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 408
    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 408
    Par défaut
    Perso, j'aime bien aussi avec xargs:
    Qui selon certain besoin, peut-être plus pratique:
    fichier à traiter:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ cat /tmp/foo.txt 
    0x11 0x22 0x33 0x44 0x55 
    0x66 0x77 0x88 0x99 0xAA 0xBB 0xCC 0xDD 0xEE 0xFF 0x01 0x22 
    0x65 0x87 0x87 0x45 0x65
    avec fold:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ fold -sw54  /tmp/foo.txt 
    0x11 0x22 0x33 0x44 0x55 
    0x66 0x77 0x88 0x99 0xAA 0xBB 0xCC 0xDD 0xEE 0xFF 
    0x01 0x22 
    0x65 0x87 0x87 0x45 0x65
    avec xargs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ xargs -s 55 -a /tmp/foo.txt 
    0x11 0x22 0x33 0x44 0x55 0x66 0x77 0x88 0x99 0xAA
    0xBB 0xCC 0xDD 0xEE 0xFF 0x01 0x22 0x65 0x87 0x87
    0x45 0x65
    Bon, après, ça dépend du besoin...

  8. #8
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 103
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    avec xargs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ xargs -s 55 -a /tmp/foo.txt 
    0x11 0x22 0x33 0x44 0x55 0x66 0x77 0x88 0x99 0xAA
    0xBB 0xCC 0xDD 0xEE 0xFF 0x01 0x22 0x65 0x87 0x87
    0x45 0x65
    Bon, après, ça dépend du besoin...
    Excellent!

    Variante pour ceux qui "bénéficient" d'un xargs sans l'option -a (genre posix, macos...):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xargs -s 55 < /tmp/foo.txt
    ou, pour les fans d'uuoc cat /tmp/foo.txt | xargs -s 55

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

Discussions similaires

  1. Remplacer un element d'une collection par un autre element
    Par pascalwick dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 02/06/2010, 10h54
  2. [XL-2007] [FORM] remplacer la valeur d'une cellule par une autre
    Par coldavires dans le forum Excel
    Réponses: 7
    Dernier message: 21/01/2010, 23h34
  3. Remplacer lettres contenues dans une variable par d'autres lettres
    Par AZzjeioafh dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 02/12/2009, 19h53
  4. Remplacer un mot ou une expression par un autre via XSLT?
    Par poisson03 dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 03/06/2009, 02h55
  5. Réponses: 10
    Dernier message: 20/09/2006, 13h53

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