Базовый пример использования grep (обратите внимание, что grep не будет моим единственным вариантом использования для этого):
$ grep -Irl "foo"
path/to/directory/help.js
path/to/directory/config.js
path/to/directory/task.js
Теперь я хочу открыть файл config.js
в Vi. Мой обычный метод будет:
$ vi path/to/directory/config.js
который мне нужно было либо набрать вручную с помощью табуляции, либо я выделил имя файла из результата grep и скопировал / вставил его.
Но я хотел бы иметь возможность просмотреть файл Vi, просто указав, что это второй результат в команде grep. Так что-то вроде:
$ grep -Irl "foo" | xargs vi 2
Очевидно, что xargs не будет работать так, это был только пример. Но я пытаюсь найти способ использовать xargs (или любую другую утилиту) для достижения этой цели, и я не нахожу его.
То, что товарищ по команде предложил мне, было использовать head
и tail
вместе, как это:
$ grep -Irl "foo" | tail -n 1 | xargs vi
получит файл task.js и
$ grep -Irl "foo" | head -n 2 | tail -n 1 | xargs vi
получит config.js. Хотите знать, если есть менее многословный метод.