{"id":2130,"date":"2020-02-10T16:34:36","date_gmt":"2020-02-10T16:34:36","guid":{"rendered":"https:\/\/profi-tutorials.de\/linux\/?p=2130"},"modified":"2020-09-02T17:48:18","modified_gmt":"2020-09-02T17:48:18","slug":"befehl-grep","status":"publish","type":"post","link":"https:\/\/profi-tutorials.de\/linux\/grundlagen\/befehl-grep\/","title":{"rendered":"Der Befehl Grep"},"content":{"rendered":"<p>Mit dem grep Befehl (&ldquo;<strong>G<\/strong>lobal Search for a <strong>R<\/strong>egular <strong>E<\/strong>xpression and <strong>P<\/strong>rint out matched lines&rdquo;) k&ouml;nnen Dateien nach verschiedenen Mustern durchsucht werden. F&uuml;r die Suche nach &Uuml;bereinstimmungen kommen sogenannte <a class=\"glossaryLink cmtt_Informatik\" aria-describedby=\"tt\" data-cmtooltip=\"&lt;div class=glossaryItemTitle&gt;Regex [Regular Expression]&lt;\/div&gt;&lt;div class=glossaryItemBody&gt;Regul&auml;re Ausdr&uuml;cke (engl. regular expression, regex) sind spezielle Zeichenketten, die ein Suchmuster definieren.&lt;\/div&gt;\" href=\"https:\/\/profi-tutorials.de\/linux\/glossar\/regex\/\" target=\"_blank\" data-mobile-support=\"0\" data-gt-translate-attributes='[{\"attribute\":\"data-cmtooltip\", \"format\":\"html\"}]' tabindex=\"0\" role=\"link\">Regul&auml;re Ausdr&uuml;cke<\/a> zum Einsatz.<\/p>\n<p>In diesem Beitrag lernen Sie die grundlegende Funktionsweise des grep Befehls, sowie einige mit dem Befehl verwendbare regul&auml;re Ausdr&uuml;cke kennen.<\/p>\n<h2 id=\"tab-con-8\">Die 4 verschiedenen grep Befehle<\/h2>\n<p>Neben dem normalen&nbsp;<strong>grep<\/strong> gibt es mittlerweile noch einige weitere Befehle mit &auml;hnlicher Funktionsweise. Dazu geh&ouml;ren die folgenden drei:<\/p>\n<ul>\n<li>                    <span>egrep (&ldquo;extended grep&rdquo;)<\/span><\/li>\n<li>                    <span>fgrep (&ldquo;fixed grep&rdquo;) oder (&ldquo;faster grep&rdquo;)<\/span><\/li>\n<li>                    <span>rgrep (&ldquo;recursive grep&rdquo;)<\/span><\/li>\n<\/ul>\n<p>Die 3 Abwandlungen unterscheiden sich von dem herk&ouml;mmlichen <strong>grep<\/strong> in der Verf&uuml;gbarkeit weiterer Ausdr&uuml;cke (<strong>egrep<\/strong>), der Such-Geschwindigkeit (<strong>fgrep<\/strong>) und der M&ouml;glichkeit f&uuml;r rekursive Suchen in Unterverzeichnissen (<strong>rgrep<\/strong>).&nbsp;<\/p>\n<p>In diesem Beitrag wird jedoch zun&auml;chst nur der klassische <strong>grep<\/strong> Befehl behandelt.<\/p>\n<h2 id=\"tab-con-4\">Die Suche mit grep<\/h2>\n<p>Bei der Suche mit <strong>grep<\/strong> wird die folgende <a class=\"glossaryLink cmtt_Allgemein cmtt_Informatik\" aria-describedby=\"tt\" data-cmtooltip=\"&lt;div class=glossaryItemTitle&gt;Syntax&lt;\/div&gt;&lt;div class=glossaryItemBody&gt;&#8203;Im  Allgemeinen wird unter Syntax ein Regel&#8203;system verstanden, welches zur  Kombination elementarer Zeichen zu zusammengesetzten &#8203;Zeichen in (...)&lt;\/div&gt;\" href=\"https:\/\/profi-tutorials.de\/linux\/glossar\/syntax\/\" target=\"_blank\" data-mobile-support=\"0\" data-gt-translate-attributes='[{\"attribute\":\"data-cmtooltip\", \"format\":\"html\"}]' tabindex=\"0\" role=\"link\">Syntax<\/a> verwendet:<\/p>\n<pre>grep [Optionen] [Muster] [Dateipfad]<\/pre>\n<h5>Beispiel: Suche nach einem Wort<\/h5>\n<p>Bei diesem Beispiel soll die Datei &ldquo;gruppen.txt&rdquo; nach dem <a class=\"glossaryLink cmtt_Allgemein cmtt_Informatik\" aria-describedby=\"tt\" data-cmtooltip=\"&lt;div class=glossaryItemTitle&gt;Wort&lt;\/div&gt;&lt;div class=glossaryItemBody&gt;Ein Wort ist in der Informatik eine endliche Folge &uuml;ber einem Alphabet.&lt;\/div&gt;\" href=\"https:\/\/profi-tutorials.de\/linux\/glossar\/wort\/\" target=\"_blank\" data-mobile-support=\"0\" data-gt-translate-attributes='[{\"attribute\":\"data-cmtooltip\", \"format\":\"html\"}]' tabindex=\"0\" role=\"link\">Wort<\/a> &lsquo;it&rsquo; durchsucht werden. <strong>grep<\/strong> gibt alle Zeilen zur&uuml;ck, in denen das Wort aufzufinden ist.<\/p>\n<h6>Inhalt der Textdatei (gruppen.txt):<\/h6>\n<p>it-consulting-hannoverimmobilienservice-hannoveropen-school-itonline-kursemiete-hannover<\/p>\n<h6>Eingabe:<\/h6>\n<p>grep &lsquo;it&rsquo; gruppen.txt<\/p>\n<h6>Ausgabe:<\/h6>\n<p>it-consulting-hannoveropen-school-it<\/p>\n<h3 id=\"tab-con-6\">Suche in mehreren Dateien<\/h3>\n<p>Es k&ouml;nnen auch mehrere Dateipfade hintereinander angegeben werden, um in allen angegebenen Dateien gleichzeitig nach einem Muster zu suchen. Die Dateipfade werden hintereinander, durch Leerzeichen getrennt, aufgelistet:<\/p>\n<pre>grep [Optionen] [Muster] [Dateipfad] [Dateipfad] ...<\/pre>\n<h5>Beispiel: Suche nach einem Wort in mehreren Dateien<\/h5>\n<p>Hier sollen die beiden Dateien <strong>\/etc\/passwd<\/strong> und <strong>\/etc\/group<\/strong> nach dem Benutzer &lsquo;admina&rsquo; durchsucht werden. Dazu werden f&uuml;r <strong>grep<\/strong> gleich beide Dateipfade angegeben.<\/p>\n<p>Falls Sie mehr &uuml;ber die <strong>\/etc\/passwd<\/strong> bzw. <strong>\/etc\/group<\/strong> erfahren wollen, sehen Sie sich auch <a href=\"https:\/\/profi-tutorials.de\/linux\/grundlagen\/benutzer-gruppen-linux\/\" style=\"outline: none;\" target=\"_blank\" rel=\"noopener noreferrer\">unseren Beitrag dazu<\/a> an.<\/p>\n<h6>Ausschnitt aus \/etc\/passwd:<\/h6>\n<p>hellberg:x:1000:1000:hellberg,,,:\/home\/hellberg:\/bin\/bashadmina:x:1001:1001:admina,,,:\/home\/admina:\/bin\/bashbibo:x:1006:1002:,,,:\/home\/bibo:\/bin\/bash<\/p>\n<p>berni:x:1003:1003:,,,:\/home\/berni:\/bin\/bash<\/p>\n<h6>Ausschnitt aus \/etc\/group:<\/h6>\n<p>hellberg:x:1000:bibo:x:1002:hellbergadmina:x:1001:berni:x:1003:hellberg<\/p>\n<h6>Eingabe:<\/h6>\n<p>grep &lsquo;admina&rsquo; \/etc\/passwd \/etc\/group<\/p>\n<h6>Ausgabe:<\/h6>\n<p>\/etc\/passwd:admina:x:1001:1001:admina,,,:\/home\/admina:\/bin\/bash\/etc\/group:admina:x:1001:<\/p>\n<h3 id=\"tab-con-5\">Wichtige Optionen des grep Befehls<\/h3>\n<p>Im Folgenden werden einige der wichtigsten Optionen vorgestellt.<\/p>\n<h4 id=\"tab-con-0\">Rekursive Suche in allen Unterverzeichnissen<\/h4>\n<p>Mit der Option <strong>-R<\/strong> k&ouml;nnen alle Unterverzeichnisse des aktuellen Verzeichnisses oder eines angegebenen Verzeichnisses durchsucht werden.<\/p>\n<pre>grep -R [Muster] [Verzeichnis]<\/pre>\n<p>F&uuml;r jede gefundene Zeile wird der jeweilige Dateipfad angegeben.<\/p>\n<h4 id=\"tab-con-2\">Ganze W&ouml;rter suchen<\/h4>\n<p>Bei der Suche von beispielsweise &lsquo;hedv&rsquo; oder &lsquo;hellberg&rsquo; werden auch <a class=\"glossaryLink cmtt_Allgemein cmtt_Informatik\" aria-describedby=\"tt\" data-cmtooltip=\"&lt;div class=glossaryItemTitle&gt;Konkatenation&lt;\/div&gt;&lt;div class=glossaryItemBody&gt;Die Konkatenation ist die Verkn&uuml;pfung zweier Worte zu einem neuen Wort.&lt;\/div&gt;\" href=\"https:\/\/profi-tutorials.de\/linux\/glossar\/konkatenation\/\" target=\"_blank\" data-mobile-support=\"0\" data-gt-translate-attributes='[{\"attribute\":\"data-cmtooltip\", \"format\":\"html\"}]' tabindex=\"0\" role=\"link\">Konkatenationen<\/a> der Worte mit anderen W&ouml;rtern ausgegeben (z.B. &ldquo;hedvberatung&rdquo;). Um zu gew&auml;hrleisten, dass nur nach ganzen Worten gesucht wird, wird die Option <strong>-w<\/strong> angeh&auml;ngt:<\/p>\n<pre>grep -w [Muster] [Dateipfad]<\/pre>\n<h4>Zeilennummer ausgeben<\/h4>\n<p>F&uuml;r jede gefundene Zeile kann zus&auml;tzlich die Zeilennummer angezeigt werden. Dies wird durch Hinzuf&uuml;gen der Option <strong>-n<\/strong>&#8203;&#8203;&#8203;&#8203; erreicht:<\/p>\n<pre>grep -n [Muster] [Dateipfad]<\/pre>\n<p>Die Zeilennummer wird dann an den Anfang jeder ausgegebenen Zeile angeh&auml;ngt.<\/p>\n<h4>Gro&szlig;- und Kleinschreibung ignorieren<\/h4>\n<p>Bei der Suche nach einem Muster kann mit der Option <strong>-i<\/strong> die Gro&szlig;- und Kleinschreibung ignoriert werden (case-insensitive).<\/p>\n<pre>grep -i [Muster] [Dateipfad]<\/pre>\n<h4>Suche invertieren<\/h4>\n<p>Mit <strong>-v<\/strong> wird die Suche invertiert, sodass nur die <strong>nicht<\/strong> passenden Zeilen ausgegeben werden.<\/p>\n<pre>grep -v [Muster] [Dateipfad]<\/pre>\n<h2 id=\"tab-con-1\">Regul&auml;re Ausdr&uuml;cke f&uuml;r die Suche<\/h2>\n<p>Bei der Suche mit <strong>grep<\/strong> k&ouml;nnen neben einfachen Worten auch sogenannte Regul&auml;re Ausdr&uuml;cke als Such-Muster verwendet werden. Es folgt eine Liste von unterst&uuml;tzten Ausdr&uuml;cken:&nbsp;<\/p>\n<table data-rows=\"13\" data-cols=\"2\" data-v=\"middle\">\n<thead>\n<tr>\n<th style=\"\"><strong>Operator&#8203;<\/strong><\/th>\n<th style=\"\">Funktion<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td data-th=\"Operator&#8203;\" style=\"\">^<\/td>\n<td data-th=\"Funktion\" style=\"\">Zeilenanfang<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Operator&#8203;\" style=\"\">$<\/td>\n<td data-th=\"Funktion\" style=\"\">Zeilenende<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Operator&#8203;\" style=\"\">^$<\/td>\n<td data-th=\"Funktion\" style=\"\">Komplette Zeile<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Operator&#8203;\" style=\"\">.<\/td>\n<td data-th=\"Funktion\" style=\"\">Beliebiges Zeichen<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Operator&#8203;\" rowspan=\"1\" colspan=\"1\" style=\"\">*<\/td>\n<td data-th=\"Funktion\" rowspan=\"1\" colspan=\"1\" style=\"\">Beliebige Wiederholung des vorigen Zeichens<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Operator&#8203;\" rowspan=\"1\" colspan=\"1\" style=\"\">.*<\/td>\n<td data-th=\"Funktion\" rowspan=\"1\" colspan=\"1\" style=\"\">Beliebige <a class=\"glossaryLink cmtt_Allgemein cmtt_Informatik\" aria-describedby=\"tt\" data-cmtooltip=\"&lt;div class=glossaryItemTitle&gt;String&lt;\/div&gt;&lt;div class=glossaryItemBody&gt;Ein String ist in der Informatik eine Zeichenkette - stellt also eine endliche Folge von Zeichen aus einem bestimmten Zeichensatz,(...)&lt;\/div&gt;&lt;div class=cmtt_synonyms_wrapper&gt;&lt;div class=cmtt_synonyms_title&gt;Synonyms: &lt;\/div&gt;&lt;div class=cmtt_synonyms&gt;Zeichenkette&lt;\/div&gt;&lt;\/div&gt;\" href=\"https:\/\/profi-tutorials.de\/linux\/glossar\/string\/\" target=\"_blank\" data-mobile-support=\"0\" data-gt-translate-attributes='[{\"attribute\":\"data-cmtooltip\", \"format\":\"html\"}]' tabindex=\"0\" role=\"link\">Zeichenkette<\/a><\/td>\n<\/tr>\n<tr>\n<td data-th=\"Operator&#8203;\" rowspan=\"1\" colspan=\"1\" style=\"\">[]<\/td>\n<td data-th=\"Funktion\" rowspan=\"1\" colspan=\"1\" style=\"\">Eines der Zeichen aus der Menge<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Operator&#8203;\" rowspan=\"1\" colspan=\"1\" style=\"\">[^]<\/td>\n<td data-th=\"Funktion\" rowspan=\"1\" colspan=\"1\" style=\"\">Zeichen aus der Menge ignorieren<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Operator&#8203;\" rowspan=\"1\" colspan=\"1\" style=\"\">&lt;<\/td>\n<td data-th=\"Funktion\" rowspan=\"1\" colspan=\"1\" style=\"\">Anfang eines Wortes<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Operator&#8203;\" rowspan=\"1\" colspan=\"1\" style=\"\">&gt;<\/td>\n<td data-th=\"Funktion\" rowspan=\"1\" colspan=\"1\" style=\"\">Ende eines Wortes<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Operator&#8203;\" rowspan=\"1\" colspan=\"1\" style=\"\">(&hellip;)<\/td>\n<td data-th=\"Funktion\" rowspan=\"1\" colspan=\"1\" style=\"\">Back-Referenz<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Operator&#8203;\" rowspan=\"1\" colspan=\"1\" style=\"\">x{n}<\/td>\n<td data-th=\"Funktion\" rowspan=\"1\" colspan=\"1\" style=\"\">Exakt n-malige Wiederholung des Zeichens<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Es folgen nun einige Beispiele f&uuml;r die Anwendung von regul&auml;ren Ausdr&uuml;cken bei der Verwendung von <strong>grep<\/strong>.<\/p>\n<h5>Beispiel: .*<\/h5>\n<p>Hierbei wird der Operator <strong>.*<\/strong> vor das Wort &lsquo;hannover&rsquo; angeh&auml;ngt, um alle Zeilen auszugeben, die eine beliebige Zeichenkette mit Endung auf &lsquo;hannover&rsquo; enthalten.<\/p>\n<h6>Inhalt der Textdatei (gruppen.txt):<\/h6>\n<p>edvberatung-hannover<\/p>\n<p>hausverwaltung-isernhagen<\/p>\n<p>verwaltung-hannover<\/p>\n<p>profi-tutorials<\/p>\n<h6>Eingabe:<\/h6>\n<p>grep &lsquo;.*hannover&rsquo; gruppen.txt<\/p>\n<h6>Ausgabe:<\/h6>\n<p>edvberatung-hannover<\/p>\n<p>verwaltung-hannover<\/p>\n<h5>Beispiel: Zeilenanfang und Zeilenende<\/h5>\n<p>Hier soll nach Zeilen gesucht werden, die exakt ein Wort enthalten. Dazu werden die beiden Operatoren <strong>^<\/strong> (Zeilenanfang) und <strong>$<\/strong> (Zeilenende) verwendet.<\/p>\n<p>Es wird lediglich die Zeile zur&uuml;ckgegeben, die genau das angegebene Wort enth&auml;lt. Alle anderen Zeilen, die das Wort entweder garnicht oder neben dem Wort noch andere Zeichen enthalten, werden ignoriert.<\/p>\n<h6>Inhalt der Textdatei (gruppen.txt):<\/h6>\n<p>openschoolit<\/p>\n<p>open-schoolit<\/p>\n<p>open-school-it<\/p>\n<p>openschool-it<\/p>\n<p>open-school<\/p>\n<h6>Eingabe:<\/h6>\n<p>grep &lsquo;^open-school$&rsquo;<\/p>\n<h6>Ausgabe:<\/h6>\n<p>open-school<\/p>\n<h2 id=\"tab-con-3\">Das Video zu diesem Beitrag<\/h2>\n<p style=\"text-align: center;\">Abonniere JETZT unseren Newsletter!<\/p>\n<p style=\"text-align: center;\">Verpasse nie wieder <strong>neue<\/strong> Beitr&auml;ge und <strong>exklusive Insider-Only-Inhalte!<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mit dem grep Befehl (&#8220;Global Search for a Regular Expression and Print out matched lines&#8221;) k\u00f6nnen Dateien nach verschiedenen Mustern durchsucht werden. F\u00fcr die Suche nach \u00dcbereinstimmungen kommen sogenannte Regul\u00e4re Ausdr\u00fccke zum Einsatz. In diesem Beitrag lernen Sie die grundlegende Funktionsweise des grep Befehls, sowie einige mit dem Befehl verwendbare regul\u00e4re Ausdr\u00fccke kennen. Die 4 [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":1500,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_seopress_robots_primary_cat":"7","_seopress_titles_title":" %%post_title%% %%sep%% %%sitetitle%%","_seopress_titles_desc":"Mit dem grep Befehl k\u00f6nnen Dateien nach verschiedenen Mustern (regul\u00e4re Ausdr\u00fccke) durchsucht werden. Hier lernen Sie die  Verwendung des grep Befehls kennen.","_seopress_robots_index":"","footnotes":""},"categories":[8,7],"tags":[],"class_list":["post-2130","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administration","category-grundlagen"],"_links":{"self":[{"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/posts\/2130","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/comments?post=2130"}],"version-history":[{"count":217,"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/posts\/2130\/revisions"}],"predecessor-version":[{"id":6906,"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/posts\/2130\/revisions\/6906"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/media\/1500"}],"wp:attachment":[{"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/media?parent=2130"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/categories?post=2130"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/tags?post=2130"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}