3 votes

Est-il possible de changer le séparateur de champs par défaut en awk ?

J'utilise toujours awk pour manipuler des fichiers séparés par des virgules, donc la première ligne de mon code change toujours le séparateur de champ en "," comme ceci :

awk 'BEGIN {FS=","}
$2 < 20 {print $1}' myfile.csv

Est-il possible de modifier les valeurs par défaut de l'awk pour que la virgule soit le par défaut FS ? Ce n'est pas un gros problème, mais ça rendrait les choses un peu plus claires. J'ai essayé de chercher sur Google, mais je n'ai rien trouvé d'utile ; il se peut que ce ne soit pas possible, mais j'ai pensé que je devais demander !

4voto

Magnetic_dud Points 847

Pour modifier le séparateur de champs par défaut d'awk, utilisez l'option -F <fs> option ( fs étant un simple caractère ou une expression régulière).

Vous pouvez également modifier cette fs avec la variable interne de l'awk FS .

1voto

Peter.O Points 2933

EDIT : En général, comme cela a été souligné dans les commentaires, la sûr La façon d'utiliser un alias est d'utiliser un nom différent, par ex. awkc

Créez un alias qui définit le séparateur de champs comme un virgule . Mettez l'alias dans ~/.bashrc ou si ~/.bashrc sources (inclus) ~/.bash_aliases et le mettre là. Vous pouvez ensuite le remplacer par ce que vous voulez dans votre commande,

Sachez que si vous utilisez 'awk' comme nom de votre alias, votre script est totalement non portable . Il ne fonctionnera correctement que sur un système qui a ce particulier alias.

alias awkc='awk -F","'

Exemple (en utilisant l'alias)

echo "a,b c" | awkc '{print $1" -- "$2}'  

Sortie

a -- b c

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X