[awk] Petit conseil

Petit conseil [awk] - Shell/Batch - Programmation

Marsh Posté le 17-11-2007 à 14:18:14    

J'ai un fichier texte dont je veux extraire avec awk le champ de la ligne 1 (qui peut commencer par 0 ou 1 ou 2, ... 9) suivi du champ n°2 de la ligne 2 et ceci uniquement si le champ n°3 de cette même ligne est égale à '111'
 
Extrait du fichier d'entrée :
0001
champ1;champ2;222
1110
champ1;champ2;111
2228
champ1;champ2;111
3335
champ1;champ2;222
 
Fichier résultat :
1110;champ2
2228;champ2

Reply

Marsh Posté le 17-11-2007 à 14:18:14   

Reply

Marsh Posté le 17-11-2007 à 14:30:32    

Et quel est le "petit conseil" que tu souhaites? Le AWK qui fait ce que tu demandes?


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 17-11-2007 à 14:31:24    

petit conseil : man awk
 
De rien. [:klem3i1]

Reply

Marsh Posté le 17-11-2007 à 14:35:29    

sircam a écrit :

Et quel est le "petit conseil" que tu souhaites? Le AWK qui fait ce que tu demandes?


J'arrive à afficher le champ de la ligne 1 mais effectivement je ne sais pas tester et afficher le champ de la ligne 2

Reply

Marsh Posté le 17-11-2007 à 14:46:00    

Redéfinis le séparateur de champ pour que ce soit le caractère point-virgule qui soit pris en compte, il te suffira ensuite d'afficher $3 si $2 == la valeur recherchée.


Message édité par Elmoricq le 17-11-2007 à 14:46:14
Reply

Marsh Posté le 19-11-2007 à 14:25:59    

Voilà le résultat ; ça fonctionne mais il y a peut être mieux
 
awk -F ";" '
        /^[0-9]/ {
                key=$0
                getline
                if($3 == "111" )
                print key";"$2
        }
' $1

Reply

Sujets relatifs:

Leave a Replay

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