Remplacement de caractères dans fichier

Remplacement de caractères dans fichier - Shell/Batch - Programmation

Marsh Posté le 28-04-2008 à 15:57:41    

Bonjour à tous,
 
j utilise ksh et la version de l aix est la 4.3.
 
je dois traiter un fichier qui contient un ensemble de lignes faisant chacune 144 caractères.
Pour chaque ligne, Je dois remplacer les caractères 129 à 133 par d'autres caractères.
Je pense qu'une combinaison de awk ou de sed pourrait livrer la solution mais je bloque sur ce point.  
quelqu'un pourrait-il m aider ? Merci d avance.

Reply

Marsh Posté le 28-04-2008 à 15:57:41   

Reply

Marsh Posté le 29-04-2008 à 10:40:22    

J ai un debut de reponse.
 

Code :
  1. echo tutututututututu | sed 's/\(.\{6\}\)./\1O/'
  2. tututuOututututu


 
Mais elle ne s'applique qu à un seul caractère, comment l etendre sur une chaine de caractere ?
 
Merci.

Reply

Marsh Posté le 29-04-2008 à 14:06:18    

j ai trouvé, il faut ajouter autant de point de de caractères.
 

Code :
  1. sed 's/\(.\{6\}\)..../\1AAAA/'

Reply

Marsh Posté le 29-04-2008 à 14:15:26    

La prochaine fois, fournis un exemple du fichier à parser, ça donne une meilleure idée de la regex à produire.

Reply

Marsh Posté le 07-05-2008 à 11:35:31    

hatoug a écrit :

Bonjour à tous,
 
j utilise ksh et la version de l aix est la 4.3.
 
je dois traiter un fichier qui contient un ensemble de lignes faisant chacune 144 caractères.
Pour chaque ligne, Je dois remplacer les caractères 129 à 133 par d'autres caractères.
Je pense qu'une combinaison de awk ou de sed pourrait livrer la solution mais je bloque sur ce point.  
quelqu'un pourrait-il m aider ? Merci d avance.


 
Petite proposition en awk ;)
 
(avec utilisation de variables)
 

Code :
  1. awk -v POSDEB=129 -v POSFIN=133 -v NEWTEXT="AAAA" '{ print substr($0,1,POSDEB) NEWTEXT substr($0,POSFIN+1,length($0)-1) }' file_in > file_out


 


---------------
Il n'est qu'une seule chose qui excite les animaux plus que le plaisir, et c'est la douleur.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed