en effet, j'avais tenté de tout faire sur awk; avec un getline appelant un 2e fichier, mais cette commande est trop bizarre (elle efface les champs $ du fichier principal, et ça saute d'une ligne, bref le foutoir ...). Mon programme est assez simple :
prog.awk
1 2 3 4 5 6 7
| BEGIN {tablename="IW_FS"}
{
if (cnt==0) {cnt++; print arg1 > ARGV[1]".asc"; next} # ca ecrit dans un nouveau nom concaténé en appelant le nom du fichier
if (cnt==1) {cnt++; print arg2 > ARGV[1]".asc"; next}
if (cnt==2) {cnt++; print tablename > ARGV[1]".asc"; next}
printf("%5d %7.2f\n",$1,$2) > ARGV[1]".asc"
} |
param.dat
SUG-0001 623 KB
SUG-0004 614.2 KB
SUG-0005 614 KB
... (10 lignes)
fichier_01.txt (10 fichiers de ce genre, ordonnés en cohérence avec le param.dat)
# ORIGIN=460
# STEP=20
# REGULAR COORDS
460 52.219
480 55.9167
500 59.6082
520 63.7675
540 67.628
560 71.5186
580 75.5668
..... (plein de lignes)
et le code serait pour le premier fichier isolé :
awk -v arg1=SUG-0001 -v arg2=623 -f prog.awk fichier_01.txt
pour le second :
awk -v arg1=SUG-0004 -v arg2=614.2 -f prog.awk fichier_02.txt
etc ...
Partager