Bonjour,

Je souhaite parcourir un fichier en shell sh ou ksh (peu importe) et pour une positionnée donnée, remplacer le champ à cette position par autre chose.
Plus concrètement:
Soit mon fichier $fic_prov avec des lignes du type:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
ACC|168063100|168063100|1|1680631||0|0||19900101000000||7||250
ABB|168063110|168063112|1|1680631001|1680631|1|0||20110118000000|
Je souhaite donc que pour une ligne commençant par ABB, il me remplace le deuxième champs 168063110 ( le délimiteur étant | ) par <champ_2>10; où 10 représente les deux derniers caractères du champ 2 (168063110).

Pour finir, je souhaite mettre le résultat final (fichier modifié) dans un autre fichier.

Actuellement j'essaye un truc pas très potable qui me provoque une erreur.
Voici un extrait du code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
a=1
for fic_prov in $Repertoire/type_fichier*
do
 
nom_fic=`basename $fic_prov .txt`_"$a"_"txt" 
 
awk -F "|" '{ $2 = "<champ_2>substr($2,length("$2")-2,length("$2"))" ; print $0 > $nom_fic}' $fic_prov   
 
a=a+1
 
done
Erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
awk: syntax error near line 1
awk: bailing out near line 1
Merci d'avance