Traitement de chaine

Résolu
Cheero -  
 Cheero -
Bonjour,

J'ai un fichier qui se présente comme suit
1258 02 APLONDH abc
3658 03 JHAJHDEZ abcdef


J'aimerais avoir le résultat suivant
1258-02-APLONDH-a
1258-02-APLONDH-b
1258-02-APLONDH-c
3658-03-JHAJHDEZ-a
3658-03-JHAJHDEZ-b
3658-03-JHAJHDEZ-c
3658-03-JHAJHDEZ-d
3658-03-JHAJHDEZ-e
3658-03-JHAJHDEZ-f


J'essaie de trouver une commande qui macherait pas mal le travail pour éviter d'avoir un script trop lourd. Car mon fichier fait environ 50Mo.

D'avance merci
Cheero

2 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    $ awk -v OFS="-" '{x=$NF; NF--; for(n=1; n<=length(x);)print $0, substr(x, n++, 1)}' fichier
    1258-02-APLONDH-a
    1258-02-APLONDH-b
    1258-02-APLONDH-c
    3658-03-JHAJHDEZ-a
    3658-03-JHAJHDEZ-b
    3658-03-JHAJHDEZ-c
    3658-03-JHAJHDEZ-d
    3658-03-JHAJHDEZ-e
    3658-03-JHAJHDEZ-f
    
    0
  2. Cheero
     
    Je me disais bien qu'un awk saurait le faire mais je ne connais pas très bien cette commande.

    Merci bien dubcek
    0