{"id":12091,"date":"2022-01-25T13:43:54","date_gmt":"2022-01-25T13:43:54","guid":{"rendered":"https:\/\/profi-tutorials.de\/linux\/?p=12091"},"modified":"2022-01-25T13:43:55","modified_gmt":"2022-01-25T13:43:55","slug":"befehl-tr","status":"publish","type":"post","link":"https:\/\/profi-tutorials.de\/linux\/grundlagen\/befehl-tr\/","title":{"rendered":"Der Befehl tr"},"content":{"rendered":"<p>In diesem Beitrag lernen Sie den Befehl tr (<strong>tr<\/strong>anslate) kennen, welcher unter Linux- \/ UNIX-Betriebssystemen der systematischen Ersetzung von Zeichen durch andere Zeichen in Texten dient. Beispiele f&uuml;r die mit tr durchf&uuml;hrbaren Aufgaben sind die Ersetzung aller Gro&szlig;buchstaben in einem Text durch die entsprechenden Kleinbuchstaben, oder die Ersetzung mehrerer aufeinanderfolgender, zus&auml;tzlicher Leerzeichen durch ein einzelnes.<\/p>\n<p>Da der Befehl Teil des essenziellen Pakets coreutils ist, ist er auf den meisten Systemen bereits vorinstalliert.<\/p>\n<h2 id=\"t-1642174063600\">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>tr <\/strong>lautet:<\/p>\n<pre>tr [Optionen] [Zeichenkette 1] [Zeichenkette 2]<\/pre>\n<p>Standardm&auml;&szlig;ig werden Zeichen aus dem Standard-Input <strong>stdin<\/strong> gelesen, verarbeitet und schlie&szlig;lich in die Standard-Ausgabe <strong>stdout <\/strong>geschrieben. In der ersten <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> stehen die im Eingabetext zu ersetzenden Zeichen, w&auml;hrend in der zweiten Zeichenkette die Zeichen stehen, mit denen ersetzt wird. Die Zuordnung von Quell- zu Zielzeichen erfolgt nach der Reihenfolge, in der die Zeichen angegeben werden. Das hei&szlig;t, dass jeweils immer das <strong>n-te Zeichen aus Zeichenkette 1 <\/strong>auf das<strong> n-te Zeichen in Zeichenkette 2<\/strong> abgebildet wird. Falls in Zeichenkette 2 weniger Zeichen enthalten sind, als in Zeichenkette 1, so werden die Zeichen aus Zeichenkette 1, die nicht direkt &uuml;ber ihre Position auf ein Zielzeichen abbildbar sind, stets durch das letzte Zeichen aus Zeichenkette 2 ersetzt. Zus&auml;tzliche Zeichen in der Zeichenkette 2 werden ignoriert.<\/p>\n<p>W&auml;hrend die meisten Zeichen jeweils f&uuml;r sich selbst stehen, gibt es auch einige interpretierte Folgen. Dazu geh&ouml;ren einerseits einige mit dem R&uuml;ckschr&auml;gstrich angegebene Escape-Sequenzen, die jeweils ein Zeichen darstellen:<\/p>\n<table data-rows=\"10\" data-cols=\"2\" data-v=\"middle\">\n<thead>\n<tr>\n<th style=\"\"><strong>Sequenz<\/strong><\/th>\n<th style=\"\">Funktion<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td data-th=\"Sequenz\" style=\"\">NNN<\/td>\n<td data-th=\"Funktion\" style=\"\">Zeichen mit Oktalwert NNN. Es k&ouml;nnen ein bis drei oktale Ziffern angegeben werden.<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Sequenz\" style=\"\">\\<\/td>\n<td data-th=\"Funktion\" style=\"\">R&uuml;ckschr&auml;gstrich<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Sequenz\" style=\"\">a<\/td>\n<td data-th=\"Funktion\" style=\"\">H&ouml;rbarer Ton<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Sequenz\" style=\"\">b<\/td>\n<td data-th=\"Funktion\" style=\"\">Backspace<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Sequenz\" style=\"\" rowspan=\"1\" colspan=\"1\">&nbsp;f<\/td>\n<td data-th=\"Funktion\" style=\"\" rowspan=\"1\" colspan=\"1\">Seitenvorschub<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Sequenz\" style=\"\" rowspan=\"1\" colspan=\"1\">n<\/td>\n<td data-th=\"Funktion\" style=\"\" rowspan=\"1\" colspan=\"1\">Zeilenumbruch<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Sequenz\" style=\"\" rowspan=\"1\" colspan=\"1\">r<\/td>\n<td data-th=\"Funktion\" style=\"\" rowspan=\"1\" colspan=\"1\">Wagenr&uuml;cklauf<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Sequenz\" style=\"\" rowspan=\"1\" colspan=\"1\">t<\/td>\n<td data-th=\"Funktion\" style=\"\" rowspan=\"1\" colspan=\"1\">Horizontaler Tabulator<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Sequenz\" style=\"\" rowspan=\"1\" colspan=\"1\">v<\/td>\n<td data-th=\"Funktion\" style=\"\" rowspan=\"1\" colspan=\"1\">Vertikaler Tabulator<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Weiterhin gibt es jedoch auch komplexere Folgen, die der Darstellung ganzer Zeichenmengen dienen. Sofern im Folgenden nicht explizit angegeben, gibt es keine Garantie, dass eine Folge in aufsteigender Reihenfolge expandiert wird:<\/p>\n<table data-rows=\"17\" data-cols=\"2\" data-v=\"middle\">\n<thead>\n<tr>\n<th style=\"\"><strong>Folge<\/strong><\/th>\n<th style=\"\">Funktion<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td data-th=\"Folge\" style=\"\" rowspan=\"1\" colspan=\"1\">ZEICHEN1-ZEICHEN2<\/td>\n<td data-th=\"Funktion\" style=\"\" rowspan=\"1\" colspan=\"1\">Alle Zeichen von ZEICHEN1 bis ZEICHEN2 in aufsteigender Reihenfolge.<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Folge\" style=\"\" rowspan=\"1\" colspan=\"1\">[ZEICHEN*]<\/td>\n<td data-th=\"Funktion\" style=\"\" rowspan=\"1\" colspan=\"1\">Wird in der Zeichenkette 1 verwendet und stellt so viele Kopien des Zeichens ZEICHEN dar, wie sie bis zum Erreichen der L&auml;nge von Zeichenkette 2 n&ouml;tig sind.<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Folge\" style=\"\" rowspan=\"1\" colspan=\"1\">[ZEICHEN*N]<\/td>\n<td data-th=\"Funktion\" style=\"\" rowspan=\"1\" colspan=\"1\">Stellt eine Anzahl N Kopien des Zeichens ZEICHEN dar. Die Anzahl N ist oktal, wenn sie mit 0 beginnt.<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Folge\" style=\"\" rowspan=\"1\" colspan=\"1\">[:alnum:]<\/td>\n<td data-th=\"Funktion\" style=\"\" rowspan=\"1\" colspan=\"1\">Alle Buchstaben und Ziffern.<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Folge\" style=\"\" rowspan=\"1\" colspan=\"1\">[:alpha:]<\/td>\n<td data-th=\"Funktion\" style=\"\" rowspan=\"1\" colspan=\"1\">Alle Buchstaben.<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Folge\" style=\"\" rowspan=\"1\" colspan=\"1\">[:blank:]<\/td>\n<td data-th=\"Funktion\" style=\"\" rowspan=\"1\" colspan=\"1\">Alle horizontalen Leerr&auml;ume (Whitespaces).<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Folge\" style=\"\" rowspan=\"1\" colspan=\"1\">[:cntrl:]<\/td>\n<td data-th=\"Funktion\" style=\"\" rowspan=\"1\" colspan=\"1\">Alle Steuerzeichen.<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Folge\" style=\"\" rowspan=\"1\" colspan=\"1\">[:digit:]<\/td>\n<td data-th=\"Funktion\" style=\"\" rowspan=\"1\" colspan=\"1\">Alle Ziffern.<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Folge\" style=\"\" rowspan=\"1\" colspan=\"1\">[:graph:]<\/td>\n<td data-th=\"Funktion\" style=\"\" rowspan=\"1\" colspan=\"1\">Alle druckbaren Zeichen, ohne Leerzeichen.<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Folge\" style=\"\" rowspan=\"1\" colspan=\"1\">[:lower:]<\/td>\n<td data-th=\"Funktion\" style=\"\" rowspan=\"1\" colspan=\"1\">Alle Kleinbuchstaben, in aufsteigender Reihenfolge.<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Folge\" style=\"\" rowspan=\"1\" colspan=\"1\">[:print:]<\/td>\n<td data-th=\"Funktion\" style=\"\" rowspan=\"1\" colspan=\"1\">Alle druckbaren Zeichen, einschlie&szlig;lich Leerzeichen.<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Folge\" style=\"\" rowspan=\"1\" colspan=\"1\">[:punct:]<\/td>\n<td data-th=\"Funktion\" style=\"\" rowspan=\"1\" colspan=\"1\">Alle Satzzeichen.<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Folge\" style=\"\" rowspan=\"1\" colspan=\"1\">[:space:]<\/td>\n<td data-th=\"Funktion\" style=\"\" rowspan=\"1\" colspan=\"1\">Alle horizontalen oder vertikalen Leerr&auml;umen (Whitespaces).<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Folge\" style=\"\" rowspan=\"1\" colspan=\"1\">[:upper:]<\/td>\n<td data-th=\"Funktion\" style=\"\" rowspan=\"1\" colspan=\"1\">Alle Gro&szlig;buchstaben, in aufsteigender Reihenfolge.<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Folge\" style=\"\" rowspan=\"1\" colspan=\"1\">[:xdigit:]<\/td>\n<td data-th=\"Funktion\" style=\"\" rowspan=\"1\" colspan=\"1\">Alle hexadezimalen Ziffern.<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Folge\" style=\"\" rowspan=\"1\" colspan=\"1\">[=ZEICHEN=]<\/td>\n<td data-th=\"Funktion\" style=\"\" rowspan=\"1\" colspan=\"1\">Alle Zeichen, die &auml;quivalent zum Zeichen ZEICHEN sind.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h5>Beispiel: tr ohne Optionen (1)<\/h5>\n<h6 style=\"\"><span style=\"font-weight: normal;\">In diesem Beispiel wird <\/span>tr <span style=\"font-weight: normal;\">ohne Optionen verwendet, um alle Vorkommnisse eines einzelnen Zeichens in einem Text durch ein anderes Zeichen zu ersetzen.<\/span><\/h6>\n<h6>Eingabe:<\/h6>\n<p style=\"\">Der Befehl <strong>echo <\/strong>liefert in diesem Fall eine Zeichenkette, in denen <strong>Kommata &ldquo;,&rdquo;<\/strong> der Trennung mehrerer Namen dienen. Die Kommata sollen mithilfe von <strong>tr <\/strong>durch <strong>Zeilenumbr&uuml;che &ldquo;n&rdquo;<\/strong> ersetzt werden.<\/p>\n<p>echo &ldquo;admina,hedv,hellberg&rdquo; | tr &ldquo;,&rdquo; &ldquo;n&rdquo;<\/p>\n<h6>Ausgabe:<\/h6>\n<p>In der Ausgabe sind die Namen nun zeilenweise zu sehen.<\/p>\n<p>adminahedvhellberg<\/p>\n<h5>Beispiel: tr ohne Optionen (2)<\/h5>\n<h6 style=\"\"><span style=\"font-weight: normal;\">Auch dieses Beispiel setzt <\/span>tr <span style=\"font-weight: normal;\">ohne Optionen ein. In diesem Fall werden jedoch mehrere verschiedene Ersetzungen von einem Befehl durchgef&uuml;hrt.<\/span><\/h6>\n<h6>Eingabe:<\/h6>\n<p>In einer Zeichenkette sollen diesmal alle <strong>Kommata &ldquo;,&rdquo;<\/strong> durch <strong>Semikola &ldquo;;&rdquo;<\/strong> sowie die beiden <strong>Gro&szlig;buchstaben <\/strong><strong>&ldquo;T&rdquo;<\/strong> und <strong>&ldquo;K&rdquo;<\/strong> jeweils durch ihre entsprechenden Kleinbuchstaben ersetzt werden.<\/p>\n<p>echo &ldquo;Kermit,Tiffy&rdquo; | tr &ldquo;,TK&rdquo; &ldquo;;tk&rdquo;<\/p>\n<h6>Ausgabe:<\/h6>\n<p>Erwartungsgem&auml;&szlig; sind die Anfangsbuchstaben der beiden Namen nun klein und das Komma wurde durch ein Semikolon ersetzt.<\/p>\n<p>kermit;tiffy<\/p>\n<h5>Beispiel: tr ohne Optionen (3)<\/h5>\n<h6 style=\"\"><span style=\"font-weight: normal;\">Hier wird einmal die Verwendung von interpretierten Folgen zur Ersetzung aller Kleinbuchstaben in einem Text durch Gro&szlig;buchstaben gezeigt.<\/span><\/h6>\n<h6>Eingabe:<\/h6>\n<p>echo &ldquo;EDV-Beratung&rdquo; | tr &ldquo;[:lower:]&rdquo; &ldquo;[:upper:]&rdquo;<\/p>\n<h6>Ausgabe:<\/h6>\n<p>In der Ausgabe ist die urspr&uuml;ngliche Zeichenkette nun vollst&auml;ndig in Gro&szlig;buchstaben zu lesen.<\/p>\n<p>EDV-BERATUNG<\/p>\n<h2 id=\"t-1642174063601\">Wichtige Optionen<\/h2>\n<p>Die wichtigsten Optionen des Befehls <strong>tr <\/strong>werden im Folgenden vorgestellt.<\/p>\n<h3 id=\"t-1642422112161\">-c &ndash; Komplement verwenden<\/h3>\n<p>Wird die <strong>Option -c<\/strong> angegeben, so verwendet <strong>tr <\/strong>das Komplement der Zeichenkette 1 f&uuml;r die Suche nach zu ersetzenden Zeichen.<\/p>\n<pre>tr -c [Zeichenkette 1] [Zeichenkette 2]<\/pre>\n<h3 id=\"t-1642422112162\">-d &ndash; Zeichen l&ouml;schen<\/h3>\n<p>Mithilfe der <strong>Option -d<\/strong> ist es m&ouml;glich, Zeichen nicht zu ersetzen, sondern diese stattdessen zu l&ouml;schen. Es wird keine Zeichenkette 2 angegeben.<\/p>\n<pre>tr -d [Zeichenkette 1]<\/pre>\n<h3 id=\"t-1642422112163\">-s &ndash; Wiederholungen ersetzen<\/h3>\n<p>Unter Verwendung der <strong>Option -s<\/strong> ersetzt <strong>tr <\/strong>jeweils beliebig lange Wiederholungen einzelner Zeichen aus der Zeichenkette 1 durch ein einziges entsprechendes Zeichen.<\/p>\n<pre>tr -s [Zeichenkette 1] [Zeichenkette 2]<\/pre>\n<h3 id=\"t-1642422112164\">-t &ndash; Zeichenkette 1 auf Zeichenkette 2 k&uuml;rzen<\/h3>\n<p>Die <strong>Option -t<\/strong> sorgt daf&uuml;r, dass zu Beginn die L&auml;nge der Zeichenkette 1 auf die L&auml;nge von Zeichenkette 2 angepasst wird, indem &uuml;bersch&uuml;ssige Zeichen vom Ende der Zeichenkette 1 abgeschnitten werden. Verwendbar ist die Option nur bei der Umwandlung, also nicht beim L&ouml;schen.<\/p>\n<pre>tr -s [Zeichenkette 1] [Zeichenkette 2]<\/pre>\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 tr (translate) kennen, welcher unter Linux- \/ UNIX-Betriebssystemen der systematischen Ersetzung von Zeichen durch andere Zeichen in Texten dient. Beispiele f\u00fcr die mit tr durchf\u00fchrbaren Aufgaben sind die Ersetzung aller Gro\u00dfbuchstaben in einem Text durch die entsprechenden Kleinbuchstaben, oder die Ersetzung mehrerer aufeinanderfolgender, zus\u00e4tzlicher Leerzeichen durch ein einzelnes. [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":12094,"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":"Lernen Sie die Funktion des Befehls tr unter UNIX-\/Linux-Systemen im Detail kennen. Mit tr k\u00f6nnen Sie systematisch Zeichen in Texten durch andere ersetzen.","_seopress_robots_index":"","footnotes":""},"categories":[7],"tags":[],"class_list":["post-12091","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\/12091","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=12091"}],"version-history":[{"count":194,"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/posts\/12091\/revisions"}],"predecessor-version":[{"id":12594,"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/posts\/12091\/revisions\/12594"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/media\/12094"}],"wp:attachment":[{"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/media?parent=12091"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/categories?post=12091"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/tags?post=12091"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}