Sequence par deux du fichier

Résolu
mlkndiaye -  
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

je veux avoir un script shell qui met la sequence des lignes de cette maniere:
fich1:
000000000000000000000000CH5010000000000000000000 201000
000000000000000000000000CA50000000000000000000 201000001
000000000000000000000000CH5001000000000000000000 201000
000000000000000000000000CA50000000000000000000 201000001
000000000000000000000000CH5003000000000000000000 201000
000000000000000000000000CA50000000000000000000 201000001
000000000000000000000000CH5003000000000000000000 201000
000000000000000000000000CA50000000000000000000 201000001
000000000000000000000000CH5003000000000000000000 201000
000000000000000000000000CA50000000000000000000 201000001
...........
...........
je veux que les 24 premiere ligne soit numeroter sequenciellement deux a deux:
fich2:

000000000000000000000001CH5010000000000000000000 201000
000000000000000000000001CA50000000000000000000 201000001
000000000000000000000002CH5001000000000000000000 201000
000000000000000000000002CA50000000000000000000 201000001
000000000000000000000003CH5003000000000000000000 201000
000000000000000000000003CA50000000000000000000 201000001
000000000000000000000004CH5003000000000000000000 201000
000000000000000000000004CA50000000000000000000 201000001
000000000000000000000005CH5003000000000000000000 201000
000000000000000000000005CA50000000000000000000 201000001
...........
...........

4 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Bonjour,

    S'il vous plaît, merci, c'est trop demander ???

    Je veux => Je voudrai, j'aimerai, etc.

    A lire...

    Merci.
    0
  2. ripat
     
    Bonjour,

    Avec awk:

    awk '{i=i+(NR%2?1:0);print substr($0,1,24) i substr($0,25)}' fichier
    0
    1. mlkndiaye
       
      Bonjour,

      Ca marche mais il y a un decadrage a partir de la 18em ligne,
      je rappele que les 24 premieres caracteres sont reservées pour la sequence.

      voir ci-dessous
      000000000000000000000008CA50000000000000000000 2010000016DDA 01
      000000000000000000000009CH5001000000000000000000 2010000016 0
      000000000000000000000009CA50000000000000000000 2010000016DDA 01
      0000000000000000000000010CH5009000000000000000000 2010000016
      0000000000000000000000010CA50000000000000000000 2010000016DDA 0
      0000000000000000000000011CH5010000000000000000000 2010000016
      0000000000000000000000011CA50000000000000000000 2010000016DDA 0
      0000000000000000000000012CH5007000000000000000000 2010000016
      0000000000000000000000012CA50000000000000000000 2010000016DDA 0
      0000000000000000000000013CH5008000000000000000000 2010000016
      0000000000000000000000013CA50000000000000000000 2010000016DDA 1
      0000000000000000000000014CH5001000000000000000000 2010000016
      0000000000000000000000014CA50000000000000000000 2010000016DDA 0
      0
  3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    %02d pour moins de 198 lignes, pour plus mettre %03d ou plus
    gawk 'BEGIN{FS=OFS=""};{$24=$24 sprintf("%02d", i+=and(NR,1)) ; print}' fichier
    0
    1. mlkndiaye
       
      ca ne marche pas, je rappelle que je suis sous windows et j'ai installe le mks.
      est que la commande gawk peux fonctionner?
      0
    2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Fais un effort en convertissant tes fichiers ! Voir liens !
      0
    3. ripat
       
      Joli le coup de l'opérateur binaire!
      0
    4. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      dubcek c'est notre maitre Yoda du awk ;-))
      0
  4. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    essaye
    GNU AWK. MKS Toolkit for System Administrators and all higher products feature the GNU AWK utility (gawk). GNU AWK is an alternate version of the awk pattern matching and scripting language used predominantly for searching through and manipulating text-based files and data. gawk has been included to provide compatibility with other GNU tools and ported scripts from a GNU environment.
    sinon tu prends le code de ripat et tu changes i par sprintf("%02d", i)
    0
    1. mlkndiaye
       
      Merci a tous ca marcher.
      ca fonctionnée avec sprintf("%02d", i)
      Bonne journée a tous.
      0