136 votes

Obtenir la première ligne de la sortie d'une commande shell

En essayant de lire le numéro de version de vim , je reçois beaucoup de lignes supplémentaires que je dois ignorer. J'ai essayé de lire le manuel de head et j'ai essayé la commande suivante:

 vim --version | head -n 1
 

Je veux savoir si c'est la bonne approche?

194voto

Kusalananda Points 1683

Oui, c'est un moyen pour obtenir la première ligne de la sortie d'une commande.

Si la commande renvoie rien d'erreur standard que vous souhaitez capturer de la même manière, vous avez besoin de rediriger la sortie d'erreur standard de la commande du flux de sortie standard:

utility 2>&1 | head -n 1

Il existe de nombreuses autres façons de capturer la première ligne, dont l' sed 1q (arrêter après la première ligne), en sed -n 1p (imprimer uniquement la première ligne, mais de tout lire), awk 'FNR == 1' (imprimer uniquement la première ligne, mais encore une fois, tout lu), etc.

4voto

alemol Points 81

Je voudrais utiliser:

awk 'FNR <= 1' file_*.txt

Comme @Kusalananda souligne il existe de nombreuses façons de capturer la première ligne de ligne de commande, mais à l'aide de l' head -n 1 peut ne pas être la meilleure option lorsque vous utilisez des caractères génériques, car il permettra d'imprimer plus d'info. Évolution 'FNR == i' de 'FNR <= i' permet d'obtenir la première fois que je les lignes.

Par exemple, si vous avez n fichiers nommés file_1.txt, ... file_n.txt:

awk 'FNR <= 1' file_*.txt

hello
...
bye

Mais avec head jokers imprimer le nom du fichier:

head -1 file_*.txt

==> file_1.csv <==
hello
...
==> file_n.csv <==
bye

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