OVH Cloud OVH Cloud

awk or not awk

2 réponses
Avatar
hellprout
bonjour ,
un probl=E8me important =E0 vous proposer
j'ai dev un programme en perl qui prend un fichier en param=E8tre et le
modifie .
La m=E9thode :
j'ai un fichier avec des enregistrement venant d'un mainframe
chaque enregistrement doit =EAtre de la bonne longueur , une taille fixe
.
Or certains fichiers apparaissent avec un retour chariot en plein
mileiu de ce dernier
le retour chariot prend la place d'un espace ...
donc pour r=E9tablir l'enregistrement il faut faire remonter la fin de
cet enregistrement et ajouter un espace .
Une fois cette manip effectuait , l'enregistrement peut etre trait=E9
comme les autres.

je suis sous HP-UX . J'ai fait un truc en perl mais je pense qu'il est
assez long , la cause vient d'un algo basique . traitement du fichier
enregistrement par enregistrement pour savoir s'ils ont le m=EAme taille
et si un intru se glisse dedans on le traite ...
Voil=E0
maintenant je souhaite le faire avec awk ou shell (mais awk en premier
choix)
Je pense qu'il faudrat coupler shell et awk
je n'arrive pas =E0 recup le nombre de caract=E8res d'un enregistrement ,
ensuite comment enlever ce retour chariot ...
enffin pleins de zone d'ombre se glisse la dedans , j'ai fait quelques
trucs en awk , somme toute basique ....

voil=E0 si une personne peut me diriger je le remercie=20

hellprout

2 réponses

Avatar
[SauronDeMordor]
bonjour ,
un problème important à vous proposer
j'ai dev un programme en perl qui prend un fichier en paramètre et le
modifie .
La méthode :
j'ai un fichier avec des enregistrement venant d'un mainframe
chaque enregistrement doit être de la bonne longueur , une taille fix e
.
Or certains fichiers apparaissent avec un retour chariot en plein
mileiu de ce dernier
le retour chariot prend la place d'un espace ...
donc pour rétablir l'enregistrement il faut faire remonter la fin de
cet enregistrement et ajouter un espace .
Une fois cette manip effectuait , l'enregistrement peut etre traité
comme les autres.

je suis sous HP-UX . J'ai fait un truc en perl mais je pense qu'il est
assez long , la cause vient d'un algo basique . traitement du fichier
enregistrement par enregistrement pour savoir s'ils ont le même taill e
et si un intru se glisse dedans on le traite ...
Voilà
maintenant je souhaite le faire avec awk ou shell (mais awk en premier
choix)
Je pense qu'il faudrat coupler shell et awk
je n'arrive pas à recup le nombre de caractères d'un enregistrement ,


pour le nombre de caracteres voir wc

ensuite comment enlever ce retour chariot ...


regarder avec tr ( tr -d 'r' )

enffin pleins de zone d'ombre se glisse la dedans , j'ai fait quelques
trucs en awk , somme toute basique ....

voilà si une personne peut me diriger je le remercie

hellprout



Avatar
Stephane Chazelas
On 7 Dec 2005 07:49:06 -0800, wrote:
[...]
maintenant je souhaite le faire avec awk ou shell (mais awk en premier
choix)


"shell" ne veut pas dire grand chose. Un shell ne fait rien par
lui meme, il appelle d'autres utility comme... awk.

Je pense qu'il faudrat coupler shell et awk
je n'arrive pas à recup le nombre de caractères d'un enregistrement ,


length($0)

en awk

ou length tout court pour $0.

ensuite comment enlever ce retour chariot ...


sub("n", "") enleve un saut de ligne dans l'enregistrement
courant.

sub("r", "") enleverait un retour charriot, mais est-ce bien de
ca dont tu parles.

enffin pleins de zone d'ombre se glisse la dedans , j'ai fait quelques
trucs en awk , somme toute basique ....

voilà si une personne peut me diriger je le remercie
[...]


La page info de gawk est assez mal structuree, mais est assez
complete et accessible au niveau du contenu. Attention
toutefois, gawk n'est pas awk (a plein d'extensions).


--
Stephane