{"id":7038,"date":"2021-05-03T10:52:00","date_gmt":"2021-05-03T10:52:00","guid":{"rendered":"https:\/\/profi-tutorials.de\/linux\/?p=7038"},"modified":"2021-07-12T14:18:56","modified_gmt":"2021-07-12T14:18:56","slug":"befehl-egrep","status":"publish","type":"post","link":"https:\/\/profi-tutorials.de\/linux\/grundlagen\/befehl-egrep\/","title":{"rendered":"Der Befehl egrep"},"content":{"rendered":"<p>In diesem Beitrag lernen Sie den Befehl egrep (<strong>e<\/strong>xtended <strong>grep<\/strong>) kennen, welcher mit einer gr&ouml;&szlig;eren Vielfalt verf&uuml;gbarer regul&auml;rer Ausdr&uuml;cke die erweiterte Variante des Befehls grep darstellt.<\/p>\n<p>Im Folgenden werden lediglich die f&uuml;r egrep verf&uuml;gbaren regul&auml;ren Ausdr&uuml;cke vorgestellt. Andere Funktionalit&auml;ten des Befehls k&ouml;nnen Sie <a href=\"https:\/\/profi-tutorials.de\/linux\/grundlagen\/befehl-grep\/\" target=\"_blank\" style=\"outline: none;\" rel=\"noopener\">in unserem Beitrag zum Befehl grep nachlesen<\/a>.<\/p>\n<h2 id=\"t-1620036709945\">Allgemeine Syntax<\/h2>\n<p>Die allgemeine <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> des Befehls <strong>egrep <\/strong>ist weitgehend analog zur Syntax von <strong>grep<\/strong>:<\/p>\n<pre>egrep [Optionen] [Muster] [Dateipfad]<\/pre>\n<p>Der normale <strong>grep<\/strong>-Befehl bietet durch Hinzuf&uuml;gen der <strong>Option -E<\/strong> genau dieselben Funktionen wie <strong>egrep<\/strong>:<\/p>\n<pre>grep -E [Optionen] [Muster] [Dateipfad]<\/pre>\n<h2 id=\"t-1620036709946\">Regul&auml;re Ausdr&uuml;cke<\/h2>\n<p>Im Suchmuster des Befehls <strong>egrep <\/strong>sind verschiedene <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> anwendbar. Im Folgenden Abschnitt werden die Wichtigsten vorgestellt.<\/p>\n<p>Zun&auml;chst gibt es einige Grundlagen zu beachten: Die meisten Zeichen, welche in regul&auml;ren Ausdr&uuml;cken einsetzbar sind, filtern sich selbst &ndash; haben also keine besondere <a class=\"glossaryLink cmtt_Allgemein cmtt_Informatik\" aria-describedby=\"tt\" data-cmtooltip=\"&lt;div class=glossaryItemTitle&gt;Semantik&lt;\/div&gt;&lt;div class=glossaryItemBody&gt;Die Theorie oder Wissenschaft von der Bedeutung der Zeichen wird Semantik  oder auch die Bedeutungslehre genannt.&lt;\/div&gt;\" href=\"https:\/\/profi-tutorials.de\/linux\/glossar\/semantik\/\" target=\"_blank\" data-mobile-support=\"0\" data-gt-translate-attributes='[{\"attribute\":\"data-cmtooltip\", \"format\":\"html\"}]' tabindex=\"0\" role=\"link\">Semantik<\/a>. Dazu geh&ouml;ren etwa alle Zahlen und Buchstaben. Soll jedoch nach einem Sonderzeichen gesucht werden, ohne dass dieses von der REGEX-Engine interpretiert wird, so muss diesem ein <strong>Backslash &ldquo;&rdquo;<\/strong> vorangestellt werden. Das Backslash selbst kann so etwa durch seine doppelte Angabe &ldquo;\\&rdquo; maskiert werden. Regul&auml;re Ausdr&uuml;cke lassen sich schlie&szlig;lich &auml;hnlich wie etwa arithmetische Ausdr&uuml;cke, klammern. Dabei kommen <strong>runde Klammern &ldquo;()&rdquo;<\/strong> zu Einsatz.<\/p>\n<h3 id=\"t-1620036709947\">Sonderzeichen<\/h3>\n<p>In der folgenden Tabelle werden einige <strong>spezielle Operatoren<\/strong> und ihre <strong>Funktion <\/strong>aufgelistet:<\/p>\n<table data-rows=\"6\" 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=\"\">Beliebiges Zeichen<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Operator&#8203;\" style=\"\">^<\/td>\n<td data-th=\"Funktion\" style=\"\">Anfang der Zeile<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Operator&#8203;\" style=\"\">$<\/td>\n<td data-th=\"Funktion\" style=\"\">Ende der Zeile<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Operator&#8203;\" style=\"\">&lt;<\/td>\n<td data-th=\"Funktion\" style=\"\">Anfang eines Wortes<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Operator&#8203;\" style=\"\" rowspan=\"1\" colspan=\"1\">&gt;<\/td>\n<td data-th=\"Funktion\" style=\"\" rowspan=\"1\" colspan=\"1\">Ende eines Wortes<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3 id=\"t-1620036709948\">Bracket Expressions<\/h3>\n<p>Wird innerhalb eines regul&auml;ren Ausdrucks ein Zeichen aus einer bestimmten <strong>Liste <\/strong>ben&ouml;tigt, so kann eine <strong>Bracket Expression<\/strong> verwendet werden. Hierbei werden die ben&ouml;tigten Zeichen in <strong>eckigen Klammern &ldquo;[]&rdquo;<\/strong> aufgelistet. Mit dem folgenden Ausdruck werden etwa die gro&szlig;en und kleinen a&rsquo;s gesucht:<\/p>\n<pre>[Aa]<\/pre>\n<p>Die <strong>Negation einer Liste<\/strong> l&auml;sst sich durch Hinzuf&uuml;gen des <strong>Caret &ldquo;^&rdquo;<\/strong> erreichen:<\/p>\n<pre>[^Aa]<\/pre>\n<p>Sogenannte <strong>Range Expressions<\/strong> helfen nun noch dabei, auch l&auml;ngere Listen kompakt darzustellen. Dabei werden <strong>zwei Zeichen<\/strong> &ndash; verbunden mit einem <strong>Bindestrich <\/strong>&ndash; in die Bracket Expression aufgenommen. Der Ausdruck passt dann auf alle Zeichen, welche sich in der <strong>totalen Ordnung<\/strong> der beiden Zeichen genau zwischen diesen befinden (inklusive der Zeichen selbst). Die <strong>Ordnung <\/strong>ist dabei von der verwendeten <strong>Locale <\/strong>abh&auml;ngig. Die Semantik der meisten Zeichen geht bei Verwendung in einer Bracket Expression verloren. Bei dem <strong>&ldquo;]&rdquo;<\/strong> muss darauf geachtet werden, dass es sich stets am Anfang der Liste befindet. Das <strong>Caret &ldquo;^&rdquo;<\/strong> darf dagegen nicht am Anfang der Liste stehen, wenn es nicht interpretiert werden soll. Ein <strong>Bindestrich &ldquo;-&ldquo;<\/strong> muss an letzter Stelle stehen.<\/p>\n<p>Zuletzt gibt es einige <strong>vorgefertigte Listen<\/strong>, welche zur Verwendung bereit stehen:<\/p>\n<table data-rows=\"10\" data-cols=\"2\" data-v=\"middle\">\n<thead>\n<tr>\n<th style=\"\"><strong>Ausdruck<\/strong><\/th>\n<th style=\"\">Beinhaltet<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td data-th=\"Ausdruck\" style=\"\">[:alphanum:]<\/td>\n<td data-th=\"Beinhaltet\" style=\"\">Alle Ziffern und Buchstaben<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Ausdruck\" style=\"\">[:alpha:]<\/td>\n<td data-th=\"Beinhaltet\" style=\"\">Alle Buchstaben<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Ausdruck\" style=\"\">[:cntrl:]<\/td>\n<td data-th=\"Beinhaltet\" style=\"\">Alle Kontrollzeichen<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Ausdruck\" style=\"\">[:digit:]<\/td>\n<td data-th=\"Beinhaltet\" style=\"\">Alle Ziffern<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Ausdruck\" style=\"\" rowspan=\"1\" colspan=\"1\">[:lower:]<\/td>\n<td data-th=\"Beinhaltet\" style=\"\" rowspan=\"1\" colspan=\"1\">Alle Kleinbuchstaben<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Ausdruck\" style=\"\" rowspan=\"1\" colspan=\"1\">[:punct:]<\/td>\n<td data-th=\"Beinhaltet\" style=\"\" rowspan=\"1\" colspan=\"1\">Alle Satzzeichen<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Ausdruck\" style=\"\" rowspan=\"1\" colspan=\"1\">[:blank:]<\/td>\n<td data-th=\"Beinhaltet\" style=\"\" rowspan=\"1\" colspan=\"1\">Leerzeichen<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Ausdruck\" style=\"\" rowspan=\"1\" colspan=\"1\">[:space:]<\/td>\n<td data-th=\"Beinhaltet\" style=\"\" rowspan=\"1\" colspan=\"1\">Alle Zeichen, die Leerraum erzeugen<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Ausdruck\" style=\"\" rowspan=\"1\" colspan=\"1\">[:upper:]<\/td>\n<td data-th=\"Beinhaltet\" style=\"\" rowspan=\"1\" colspan=\"1\">Alle Gro&szlig;buchstaben<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3 id=\"t-1620036709949\">Wiederholungsoperatoren<\/h3>\n<p>Die folgenden Operatoren k&ouml;nnen eingesetzt werden, um einen vorangehenden <strong>Ausdruck optional oder mehrfach auszuwerten<\/strong>:<\/p>\n<table data-rows=\"7\" 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=\"\">Optionales, einmaliges Vorkommen des vorangehenden Ausdrucks<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Operator&#8203;\" style=\"\">*<\/td>\n<td data-th=\"Funktion\" style=\"\">Optionales, mehrfaches (oder einmaliges) Vorkommen des vorangehenden Ausdrucks<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Operator&#8203;\" style=\"\">+<\/td>\n<td data-th=\"Funktion\" style=\"\">Mindestens einmaliges Vorkommen des vorangehenden Ausdrucks<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Operator&#8203;\" style=\"\">{n}<\/td>\n<td data-th=\"Funktion\" style=\"\">n-maliges Vorkommen des vorangehenden Ausdrucks<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Operator&#8203;\" style=\"\" rowspan=\"1\" colspan=\"1\">{n,}<\/td>\n<td data-th=\"Funktion\" style=\"\" rowspan=\"1\" colspan=\"1\">Mindestens n-maliges Vorkommen des vorangehenden Ausdrucks<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Operator&#8203;\" style=\"\" rowspan=\"1\" colspan=\"1\">{n,m}<\/td>\n<td data-th=\"Funktion\" style=\"\" rowspan=\"1\" colspan=\"1\">n bis m-maliges Vorkommen des vorangehenden Ausdrucks<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3 id=\"t-1620036709950\">Verkn&uuml;pfung regul&auml;rer Ausdr&uuml;cke<\/h3>\n<p><strong>Mehrere regul&auml;re Ausdr&uuml;cke<\/strong> k&ouml;nnen auf verschiedene Weise miteinander <strong>verkn&uuml;pft <\/strong>werden. Die einfachste Form ist hierbei das <strong>direkte Aneinanderreihen<\/strong> der Ausdr&uuml;cke, wodurch solche <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\">Zeichenketten<\/a> gesucht werden, welche auf diese <strong><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\">Konkatenation<\/a> <\/strong>passen.<\/p>\n<p>Eine weitere erlaubte Form der Verkn&uuml;pfung ist das <strong>Oder<\/strong>: Hierbei werden mehrere Ausdr&uuml;cke mit dem <strong>Operator &ldquo;|&rdquo;<\/strong> verkettet. Der entstehende verkettete Ausdruck sucht Zeichenketten, welche <strong>entweder auf den einen, oder den anderen Ausdruck<\/strong> passen.<\/p>\n<h3 id=\"t-1620036709951\">Pr&auml;zedenzregeln<\/h3>\n<p>Die Operatoren unterliegen bei ihrer Auswertung einer bestimmten Rangfolge: <strong>Wiederholungen vor der Konkatenation vor der Oder-Verkn&uuml;pfung<\/strong>. Die schon genannten Klammern k&ouml;nnen zum &Uuml;berschreiben der Regeln einsetzt werden.<\/p>\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>In diesem Beitrag lernen Sie den Befehl egrep (extended grep) kennen, welcher mit einer gr\u00f6\u00dferen Vielfalt verf\u00fcgbarer regul\u00e4rer Ausdr\u00fccke die erweiterte Variante des Befehls grep darstellt. Im Folgenden werden lediglich die f\u00fcr egrep verf\u00fcgbaren regul\u00e4ren Ausdr\u00fccke vorgestellt. Andere Funktionalit\u00e4ten des Befehls k\u00f6nnen Sie in unserem Beitrag zum Befehl grep nachlesen. Allgemeine Syntax Die allgemeine Syntax [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":7892,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_seopress_robots_primary_cat":"none","_seopress_titles_title":"%%post_title%% %%sep%% %%sitetitle%%","_seopress_titles_desc":"Hier lernen Sie den Befehl egrep kennen, welcher unter UNIX- \/ Linux dazu verwendet wird, um Dateien mithilfe erweiterter regul\u00e4rer Ausdr\u00fccke zu durchsuchen.","_seopress_robots_index":"","footnotes":""},"categories":[7],"tags":[],"class_list":["post-7038","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-grundlagen"],"_links":{"self":[{"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/posts\/7038","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=7038"}],"version-history":[{"count":48,"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/posts\/7038\/revisions"}],"predecessor-version":[{"id":7894,"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/posts\/7038\/revisions\/7894"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/media\/7892"}],"wp:attachment":[{"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/media?parent=7038"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/categories?post=7038"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/tags?post=7038"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}