Bonjour,
j'ai du mal a comprendre la manière dont est traité un fichier texte par la commande awk.
Pour être plus précis je souhaiterais faire un traitement différent par ligne mais cela ne fonctionne pas...
Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 #!/bin/bash #awk '{toto= $0; printf(" essai %20s\n",toto);}' $1 awk '{toto= $0; printf(" essai %20s\n",toto);}{xp1= $1; yp1= $2; xp2= $3; yp2= $4; largeur = xp2 - xp1; hauteur = yp2 - yp1; surface = largeur * hauteur; printf("\nTEG dimensions (in um):\n"); printf(" Width : %10.6f\n",largeur); printf(" Length : %10.6f\n",hauteur); printf(" Area : %10.6f\n\n",surface);if (largeur != 80.000000){exit 1;}}' $1
J'injecte un fichier texte 2 lignes:
ligne 1 ==> BMW_x1
ligne 2 ==> -40 1320 40 78
Par rapport au script ci-dessus je souhaiterais effectuer la partie entre les premières accolades sur la ligne 1 et pas sur la ligne 2 et la deuxième partie entre accolade faire le traitement uniquement sur la ligne 2
Première partie entre accolade ==> {toto= $0; printf(" essai %20s\n",toto);},
Deuxième partie ==> {xp1= $1; yp1= $2; xp2= $3; yp2= $4; largeur = xp2 - xp1; hauteur = yp2 - yp1; surface = largeur * hauteur; printf("\nTEG dimensions (in um):\n"); printf(" Width : %10.6f\n",largeur); printf(" Length : %10.6f\n",hauteur); printf(" Area : %10.6f\n\n",surface);if (largeur != 80.000000){exit 1;}}' $1,
J'ai bien tenté des essais avec NR == 2 ou avec next, car next semblerait etre presque l'instruction idéal pour mon pb mais je n'arrive pas l'implémenter correctement.
L'instruction next interrompt le traitement de la ligne courante et déclenche la lecture de la ligne suivante, sur laquelle le traitement intégral sera appliqué. ( la fin me dérange car je ne veux pas effectuer le traitement intégral sur la ligne 2 )
Merci pour votre aide.
Partager