web-dev-qa-db-fra.com

Puis-je accéder à la nième numéro de ligne de sortie standard?

En supposant un script qui génère une liste de fichiers:

$> bash someScript.sh
path/to/some/file
path/to/the/file/i/want/to/work/with
path/to/yet/another/file

Maintenant, je veux avoir le deuxième chemin de fichier en tant que paramètre pour une autre commande, par exemple. vim. Y a-t-il un moyen de y accéder directement?

Et je veux souligner que je ne veux pas nécessairement accéder au deuxième fichier, mais la prochaine fois que cela pourrait être le troisième ou le 27. Je veux pouvoir sélectionner cette nième ligne aussi facilement que possible.

À l'heure actuelle, je sélectionne et insérez-le en cliquant sur le bouton intermédiaire ou saisissez le chemin avec l'onglet. Maintenant, je me demande s'il y a un moyen plus facile.

Un problème avec ma propre solution est que je devrais modifier tous mes scripts de cette façon. Il serait amusant s'il y avait une solution plus générale à cette question, cela fonctionnerait avec n'importe quel type de commandement, par exemple. find.

9
k0pernikus

Sûr.

bash someScript.sh | sed -n '2 p'

va filtrer votre sortie et imprimez simplement la deuxième ligne de celui-ci. Pour en faire un paramètre sur vim:

vim "$(bash someScript.sh | sed -n '2 p')"
20
angus

Utilisez la tête et la queue, par exemple Accéder à la 2e ligne d'une sortie:

bash someScript.sh | head -2 | tail -1
2
Stephen Quan