![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
On pense souvent à utiliser awk pour extraire et manier les colonnes de mots séparer par des espaces ou des caractères.
On pense moins souvent à extraire des colonnes de caractères. L'exemple suivant regarde si le 10 eme caractère de la ligne est égal à 1 et si le 11 eme vaut 5 ou 6.
Dans ce cas, il affiche le ligne en question.
fichier extract.awk
#!/bin/awk -f { c1=substr($0,10,1); c2=substr($0,11,1); if ( c1 == "1" && ( c2 == "5" || c2 == "6" )) { print $0; } } |
Voici un petit fichier de test:
fichier test.dat
01234567890123456 aaaaaaaaa15aaaaaa bbbbbbbbbbbbbbbbb ccccccccc16cccccc ddddddddd1ddddddd eeeeeeeeee6eeeeee |
On lance le programme sur le fichier de test:
#extract.awk test.dat aaaaaaaaa15aaaaaa ccccccccc16cccccc |
Le plus étonnant , c'est que ce script est plutot performant. Un test d'extraction pour un meme fichier, montre que le script awk met 172s contre 32s pour le c.
Pourquoi se priver de awk alors?