counter=$(grep -n 'ABC' $1 | sed 's/:[a-zA-Z0-9 ]*;//' > $2 | wc -l);
echo $counter; #Output is 0?
la valeur du compteur doit être la sortie de wc -l
droite? Pourquoi est-ce que je trouve que c'est zéro? J'utilise zsh. Si j'exécute la commande directement, je n'ai aucun problème. Est-ce que c'est quelque chose à faire avec wc
qu'il imprime quelque chose mais retourne quelque chose d'autre? Comment est-ce que je fais ceci correctement?L'évaluation d'une commande dans le tuyau bash mais la valeur de retour est erronée
Qu'est-ce que je fais? J'imprime les numéros de ligne en utilisant grep et en utilisant sed Je supprime le contenu de la ligne et en utilisant wc je compte le nombre de lignes que la sortie a.
Edit:
motrice Ulterior:
Mon motif inavoué est de diviser un fichier. Pour ce faire, j'identifie des numéros de ligne. Donc, en utilisant grep je suis à la recherche d'un certain texte (comme vous pouvez le voir est SET SCHEMA
, dans l'image). Je ne veux pas que le contenu des lignes soit juste un numéro de ligne, alors je coupe les lignes en identifiant le début et la fin. En utilisant wc -l je compte les lignes.
Vous redirigez la sortie de 'sed' dans un fichier, donc' wc' toujours compter 0 lignes. –
Pourquoi est-ce que j'obtiens une réponse quand je la lance directement dans bash –
Que voulez-vous dire? Je vous dis de supprimer la redirection: 'counter = $ (grep -n 'ABC' $ 1 | sed 's /: [a-zA-Z0-9] *; //' | wc -l);' (supprimez le '' $ 2' de la commande 'sed'). –