2 votes

Barre oblique inverse en entrée répétée en sortie

J'utilise zsh sur un MacBook Pro, OS X 10.10. Lorsque je tape certaines commandes, comme celle-ci :

cat myfile | awk -F $'\t' '{print $8, $9}' | sort | uniq -c | sort -k1,1n | awk '{if ($1 > 50) sum += $1} END {print sum}'

puis une partie de la commande est répétée avant la sortie effective de la commande. Dans ce cas, la sortie se présente comme suit

    " '{print $8, $9}' | sort | uniq -c | sort -k1,1n | awk '{if ($1 > 50) sum += $1} END {print sum}' : myusername2525

Quelqu'un sait-il comment se débarrasser de la sortie mélangée ? Je pense qu'il s'agit d'un problème de format de chaîne de caractères ou quelque chose de similaire.

2voto

shsteimer Points 8749

Le problème, c'est que la $ dans le premier awk dans la chaîne :

awk -F $'\t' '{print $8, $9}'

Les -F option pour les awk définit le séparateur d'enregistrement pour votre entrée. Si vous vous attendez vraiment à ce que le séparateur soit un signe de dollar suivi d'une tabulation, vous devez placer le signe de dollar entre guillemets simples, comme suit :

awk -F '$\t' '{print $8, $9}'

Quitter le $ en dehors des guillemets signifie qu'il est interprété par le shell comme une référence à une variable. C'est la raison pour laquelle vous obtenez des résultats bizarres. Si vous n'attendez pas de signe de dollar dans le séparateur de champ, mais seulement une tabulation, modifiez le paramètre awk appeler à :

awk -F '\t' '{print $8, $9}'

D'après ce que vous avez dit, il semble que ce qui précède corresponde à ce que vous souhaitez.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X