特定の文字列を含むebuildに対してgrep検索を実行し、ebuildの場所のみを含む出力を生成するにはどうすればよいですか?

特定の文字列を含むebuildに対してgrep検索を実行し、ebuildの場所のみを含む出力を生成するにはどうすればよいですか?

私はAtom(テキストエディタ)で目的の文字列を持つebuildを検索して開くために使用できるBashスクリプト機能を作成しようとしました。これは私の現在の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カテゴリからebuildを検索するにはAtomを使用し、Atomを使用して結果を開きたいです。問題は、その内容が文字列(たとえば)が表示されるebuildの場所と、ファイルシステムのebuildの場所(ループから渡したい)を参照していることです。つまり、この例には次の内容があります。x11-themes.src.rpm${L}.src.rpmatomfor${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最後の行など)を表し、2番目の部分(SRC_URI="mirror://fedora-dev/${SRC_PATH}/${PN}-$(replace_version_separator 3 -).fc${FEDORA}.src.rpm最後の行など)は.src.rpm文字列が表示される行を表します。grepファイルシステムのebuild位置のみが表示されるように出力を変更する方法はありますか?

ベストアンサー1

grep次のオプションを使用して、検索パラメータと一致するファイルのファイル名のみを出力できます-l

function edsch {
  L=$(grep -l --include "*.ebuild" -R "$1" /usr/portage/$2)

  for i in ${L[@]}
  do
    atom $i
  done
}

これにより、探している出力が生成され、Atomを使用してそのファイルが開きます。

おすすめ記事