Sequence par deux du fichier

Résolu/Fermé
mlkndiaye - 28 mai 2010 à 20:20
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 29 mai 2010 à 17:06
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
...........
...........


A voir également:

4 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
29 mai 2010 à 09:59
Bonjour,

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

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

A lire...

Merci.
0
Bonjour,

Avec awk:

awk '{i=i+(NR%2?1:0);print substr($0,1,24) i substr($0,25)}' fichier
0
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
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
29 mai 2010 à 15:59
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
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
29 mai 2010 à 16:26
Fais un effort en convertissant tes fichiers ! Voir liens !
0
Joli le coup de l'opérateur binaire!
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
29 mai 2010 à 17:06
dubcek c'est notre maitre Yoda du awk ;-))
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
Modifié par dubcek le 29/05/2010 à 16:38
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
Merci a tous ca marcher.
ca fonctionnée avec sprintf("%02d", i)
Bonne journée a tous.
0