// Datei: ./werkzeuge/paketoperationen/nach-muster-in-einem-paket-suchen.adoc

// Baustelle: Fertig

[[nach-muster-in-einem-paket-suchen]]

=== Nach Muster in einem Paket suchen ===

// Stichworte für den Index
(((degrep)))
(((dfgrep)))
(((dgrep)))
(((dzgrep)))
(((Debianpaket, debian-goodies)))
Zur Lösung dieser Aufgabe steht Ihnen das Programm `dgrep` mit seinen
drei Varianten `degrep`, `dfgrep` und `dzgrep` aus dem Paket
'debian-goodies' <<Debian-Paket-debian-goodies>> zur Verfügung. Dieses
Shellskript kombiniert das Programm `dpkg` mit dem Suchwerkzeug `grep`
und dessen Kollegen `egrep`, `fgrep` und `zgrep` miteinander. Je nach
Bedarf suchen Sie darüber entweder in den Dateien aller bereits
installierten Pakete oder lediglich in einer Auswahl davon. Nutzen Sie
`dzgrep`, werden auch komprimierte Dateien in die Recherche mit
einbezogen. Die Auflösung, welche Datei zu einem Paket gehört, erfolgt
über das Programm `dglob` aus dem gleichen Paket.

Aufgrund der Verknüpfung der Programme können Sie zur Recherche nach dem
gesuchten Muster auch die meisten der Optionen, die Sie von den
`grep`-Varianten her kennen, einsetzen. Das schließt bspw. reguläre
Ausdrücke und die farbige Hervorhebung der Suchtreffer in der Ausgabe
mit ein. Ausgenommen sind jedoch Verzeichnisse und das Verfolgen von
symbolischen Links. 

In der nachfolgenden Ausgabe sehen Sie einen Ausschnitt des
Rechercheergebnisses nach dem Muster `regular` im Paket 'bash-doc'.
Dabei beinhaltet die linke Spalte die Datei, in welcher das Muster
auftrat, und in der rechten Spalte das Muster samt Kontext drumherum.

// Stichworte für den Index
(((dgrep, --color regular)))

.Suche nach dem Vorkommen des Musters `regular` im Paket 'bash-doc'
----
$ dgrep --color regular bash-doc
/usr/share/doc/bash/examples/scripts.v2/where:    # Find all pattern matches that are executable regular files.
/usr/share/doc/bash/examples/complete/bash_completion:			# so we can set them before handing off to regular
/usr/share/doc/bash/examples/scripts/bcsh.sh:#	A cshell-style "setenv" command is turned into a regular "set" command.
...
$
----

// Stichworte für den Index
(((dgrep, -i)))
(((dgrep, -l)))
Benötigen Sie hingegen nur eine kurze Liste mit den Dateinamen, hilft
Ihnen die `grep`-Option `-l` (Langfassung `--files-with-matches`)
weiter. Für zusätzliche Optionen werfen Sie bitte einen Blick in die
Manpage zu `grep`. Nachfolgend sehen Sie einen Ausschnitt des
Suchergebnisses nach dem Muster `regular` über alle installierten Pakete
ohne Berücksichtigung der Groß- und Kleinschreibung (Option `-i` bzw.
`--ignore-case` in der Langfassung).

.Suche nach dem Vorkommen des Musters `regular` in allen installierten Paketen (Kurzfassung)
----
$ dgrep -l -i regular bash-doc
/usr/lib/perl5/XML/LibXML/Error.pm
/usr/lib/perl5/XML/LibXML/XPathContext.pod
/usr/lib/perl5/XML/LibXML/Text.pod
/usr/lib/perl5/XML/LibXML/RegExp.pod
/usr/share/doc/module-assistant/index.html
/usr/share/doc/libfftw3-3/README.Debian
/usr/share/perl5/Text/WrapI18N.pm
/usr/share/doc/chromium/README.source
/usr/share/doc/bash/examples/scripts.v2/where
/usr/share/doc/bash/examples/complete/bash_completion
/usr/share/doc/bash/examples/scripts/bcsh.sh
...
$
----

// Datei (Ende): ./werkzeuge/paketoperationen/nach-muster-in-einem-paket-suchen.adoc
