Как мне получить grep для поиска ebuild с определенными строками и создать вывод, содержащий только местоположение ebuild?

Я пытаюсь создать функцию сценария Bash, которая может использоваться для поиска и открытия ebuild с нужной строкой в ​​Atom (текстовом редакторе). Это моя текущая функция скрипта Bash (хранится в ~/.bashrc )

 function edsch { L=$(grep --include "*.ebuild" -R "$1" /usr/portage/$2) for i in ${L[@]} do atom $i done } 

Я хотел бы использовать edsch .src.rpm x11-themes для поиска ebuilds в категории x11-themes с .src.rpm в них, а затем открыть результаты с Atom. Проблема в том, что в ${L} есть содержимое, .src.rpm к тому, где в ebuild появляется строка (например, .src.rpm ), а также расположение ebuilds в моей файловой системе (которую я хочу передать atom в for цикла). А именно, в этом примере ${L} имеет следующее содержание:

 /usr/portage/x11-themes/redhat-artwork/redhat-artwork-5.0.8-r4.ebuild:SRC_URI="mirror://gentoo/${P}-${MY_R}.fc7.src.rpm" /usr/portage/x11-themes/lovelock-backgrounds/lovelock-backgrounds-14.91.1.1.ebuild:SRC_URI="mirror://fedora-dev/${SRC_PATH}/${PN}-$(replace_version_separator 3 -).fc${FEDORA}.src.rpm" /usr/portage/x11-themes/laughlin-backgrounds/laughlin-backgrounds-14.1.0.3.ebuild:SRC_URI="mirror://fedora-dev/${SRC_PATH}/${PN}-$(replace_version_separator 3 -).fc${FEDORA}.src.rpm" /usr/portage/x11-themes/solar-backgrounds/solar-backgrounds-0.92.0.5.ebuild:SRC_URI="mirror://fedora-dev/${SRC_PATH}/${PN}-$(replace_version_separator 3 -).fc${FEDORA}.src.rpm" /usr/portage/x11-themes/goddard-backgrounds/goddard-backgrounds-13.0.0.3.ebuild:SRC_URI="mirror://fedora-dev/${SRC_PATH}/${PN}-$(replace_version_separator 3 -).fc${FEDORA}.src.rpm" /usr/portage/x11-themes/leonidas-backgrounds/leonidas-backgrounds-11.0.0.2.ebuild:SRC_URI="mirror://fedora-dev/${SRC_PATH}/${PN}-$(replace_version_separator 3 -).fc${FEDORA}.src.rpm" /usr/portage/x11-themes/verne-backgrounds/verne-backgrounds-15.91.0.1.ebuild:SRC_URI="mirror://fedora-dev/${SRC_PATH}/${PN}-$(replace_version_separator 3 -).fc${FEDORA}.src.rpm" /usr/portage/x11-themes/constantine-backgrounds/constantine-backgrounds-12.1.1.4.ebuild:SRC_URI="mirror://fedora-dev/${SRC_PATH}/${PN}-$(replace_version_separator 3 -).fc${FEDORA}.src.rpm" 

Первая часть каждой из этих строк относится к местоположению ebuild в моей системе (например, /usr/portage/x11-themes/constantine-backgrounds/constantine-backgrounds-12.1.1.4.ebuild в последней строке), тогда как вторая часть (например, SRC_URI="mirror://fedora-dev/${SRC_PATH}/${PN}-$(replace_version_separator 3 -).fc${FEDORA}.src.rpm в последней строке) относится к строка, на которой появляется строка .src.rpm . Можно ли изменить вывод grep так, чтобы отображалось только расположение ebuild в моей файловой системе?

One Solution collect form web for “Как мне получить grep для поиска ebuild с определенными строками и создать вывод, содержащий только местоположение ebuild?”

Вы можете сообщить grep чтобы выводить только файлы файлов, соответствующие параметрам поиска, используя параметр -l :

 function edsch { L=$(grep -l --include "*.ebuild" -R "$1" /usr/portage/$2) for i in ${L[@]} do atom $i done } 

Это даст результат, который вы ищете, и откройте соответствующие файлы с помощью Atom.

  • Как извлечь определенное значение из файла журнала и перенести его в другой файл
  • grep сопоставляет несколько подстрок и пропускает или проваливается
  • Нужна рука с grep + regex
  • Результаты кошки grep
  • Количество файлов, не содержащих заданную строку
  • Проблема с журналом реального времени, проверяющим хвост трубопровода, grep и разрез
  • Как рекурсивно grep текущее содержимое каталога, опуская все скрытые каталоги?
  • Как я могу использовать «grep» шаблоны в нескольких строках?
  • bash извлечь подстроку из «1.2.3-SNAPSHOT»
  • найдите первую строку, начинающуюся с <ключевое слово> после <other-keyword>
  • как сохранить часть строк в файле на основе информации во втором файле?
  • Linux и Unix - лучшая ОС в мире.