7
votes

Comment utiliser AWK pour extraire un champ cité?

J'utilise

awk '{ printf "%s", $3 }'


1 commentaires

Montrez votre format de fichier d'entrée..et votre sortie souhaitée!


4 Réponses :


1
votes

Ceci est en fait assez difficile. Je suis venu avec le script awk suivant qui scindre la ligne manuellement et stocke tous les champs d'une matrice. xxx


1 commentaires

C'est une solution assez complexe. S'il n'y a pas de solution simple une ligne , j'irais pour Perl



6
votes

Affiche votre fichier d'entrée et votre sortie souhaitée la prochaine fois. Pour obtenir des champs indiqués,

$ cat file
field1 field2 "field 3" field4 "field5"

$ awk -F'"' '{for(i=2;i<=NF;i+=2) print $i}' file
field 3
field5


2 commentaires

En fait, c'est le journal du serveur Web Apache. Il semble que Awk ne puisse pas le faire facilement.


@mmonem alors cela pourrait être utile: ServerFault.com/Questtions/11028/...



1
votes

Voici une solution alternative possible à ce problème. Cela fonctionne en trouvant les champs qui commencent ou finissent par des citations, puis rejoignent ceux ensemble. À la fin, il met à jour les champs et nf, donc si vous mettez plus de motifs après celui qui fait la fusion, vous pouvez traiter les champs (nouveaux) à l'aide de toutes les fonctionnalités normales AWK.

Je pense que cela utilise uniquement des fonctionnalités de POSIX Awk et ne s'appuie pas sur des extensions Gawk, mais je ne suis pas complètement sûr. xxx

sur un fichier d'entrée comme: xxx

Il produit: xxx


0 commentaires

1
votes

Si vous recherchez simplement un champ spécifique, alors xxx

fonctionne. Il divise le fichier par ", de sorte que le 2e champ de l'exemple ci-dessus est celui que vous voulez.


0 commentaires