Insérer un caractère [Shell] - Shell/Batch - Programmation
Marsh Posté le 06-03-2008 à 20:29:11
Il y a des awk qui accepte la fonction substr(), et aussi printf qui est plus pratique que print.
awk '{printf("%8s %8s %8s %8s", substr($1,1,8), substr($1,9,8), substr($1,17,8), substr($1,25,8)}' fic1 > fic2 |
(non testé).
Sinon, il est possible de faire une boucle sur chaque chaine de 32 caractères (je n'ai pas compris s'il n'y en a qu'une ou plusieurs), de couper des morceaux de 8 caractères avec cut -b1-8, cut -b9-18, etc, puis de les coller par un echo vers le fichier resultat.
Marsh Posté le 06-03-2008 à 21:26:02
olivthill a écrit : Il y a des awk qui accepte la fonction substr(), et aussi printf qui est plus pratique que print.
(non testé). |
Je teste cette commande demain
Marsh Posté le 06-03-2008 à 23:27:02
Plus simple avec perl:
Code :
|
Marsh Posté le 06-03-2008 à 18:33:32
Bonsoir,
En shell, je souhaite insérer un 'espace' dans une chaine contenant 32 caractères alphanumériques mais il faut que cette insertion se fasse tous les 8 caractères ; exemple :
avant :
afe4cd47afe4cd570010d64343e37721
après :
afe4cd47 afe4cd57 0010d643 43e37721
avec sed j'insère un espace après chaque caractère :
sed 's/\([^ ]\)/\1 /g' fic1 > fic2 :
cat fic1 :
afe4cd47afe4cd570010d64343e37721
cat fic2 :
a f e 4 c d 4 7 a f e 4 c d 5 7 0 0 1 0 d 6 4 3 4 3 e 3 7 7 2 1
Avec awk j'arrive au résultat final :
awk '{print $1$2$3$4$5$6$7$8" "$9$10$11$12$13$14$15$16" "$17$18$19$20$21$22$23$24" "$25$26$27$28$29$30$31$32}' fic2 > fic3
cat fic3 :
afe4cd47 afe4cd57 0010d643 43e37721
Ma question : l'utilisation d'awk dans ce cas me parait bien lourde ; peut on arriver au résultat final plus simplement ?
Merci.