317 votes

Comment utiliser ":" comme séparateur de champs awk?

Compte tenu de la commande suivante:

 echo "1: " | awk '/1/ -F ":" {print $1}'
 

pourquoi awk affiche-t-il:

 1: 
 

502voto

Jürgen Hötzel Points 6613

"-F" est un argument de ligne de commande et non une syntaxe awk, essayez:

  echo "1: " | awk -F  ":" '/1/ {print $1}'
 

74voto

Dennis Williamson Points 105818

Si vous voulez le faire par programme, vous pouvez utiliser la variable FS :

 echo "1: " | awk 'BEGIN { FS=":" } /1/ { print $1 }'
 

Notez que si vous le modifiez dans la boucle principale plutôt que dans la boucle BEGIN , cela aura une incidence sur la ligne suivante lue, car la ligne actuelle a déjà été fractionnée.

12voto

danben Points 35312

-F est un argument pour awk lui-même:

 $echo "1: " | awk -F":" '/1/ {print $1}'
1
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X