10
votes

Les conflits de 1 $ de AWK avec 1 $ en script shell

J'écris un script shell qui comprend quelques lignes AWK

la ligne AWK ressemble à: xxx

le premier 1 $ est la première colonne de l'entrée CSV, le second $ 1 est censé être la première entrée de ligne de commande de ce script shell

J'ai essayé de mettre un \ devant le second $ , mais cela semble ne pas fonctionner.

Quelqu'un peut-il aider?


0 commentaires

3 Réponses :


4
votes
awk ... < input.csv

3 commentaires

Cela ne dit pas vraiment à lire le fichier. Il indique à la coquille de le nourrir directement dans STDIN de Awk au lieu d'utiliser CAT.


@Ignacio Vazquez-Abrams: Je sais mais je ne voulais pas entrer dans trop de complications.


@ Ignaciovazquez-Abrams La redirection ne «l'alimente pas directement dans STDIN'S AWK». Le fichier devient STDIN'S AWK. L'utilisation inutile du chat nourrit le contenu du fichier à STDIN de l'AWK et que les E / S inutiles sont la raison pour laquelle UUOC est inefficace.



4
votes

Une variable est bien aussi.

awk -F, -v needle="$1" '$1 ~ needle {print "is good"}' < input.csv


2 commentaires

Bonne idée de la variable supplémentaire. Je suppose que cela élimine tout problème où 1 $ peut contenir des caractères spéciaux, n'est-ce pas?


Chaque personnage est spécial à sa manière.



0
votes

chat ou une redirection n'est pas nécessaire. Voici une troisième variante à l'aide de barreaux Backslash: xxx


0 commentaires