Tr Kommando: Unterschied zwischen den Versionen
Sigi (Diskussion | Beiträge) (Die Seite wurde neu angelegt: « : Mit <code> tr </code> können Zeichen ersetzt, komprimiert oder gelöscht werden. Synopsis: <syntaxhighlight lang="bash"> tr [option]... SET1 [SET2] </s…») |
Sigi (Diskussion | Beiträge) K |
||
Zeile 10: | Zeile 10: | ||
: Ein SET ist im Grunde eine Zeichenkette, einschließlich Sonderzeichen als interpretierte Folgen mit Backslash. | : Ein SET ist im Grunde eine Zeichenkette, einschließlich Sonderzeichen als interpretierte Folgen mit Backslash. | ||
+ | |||
+ | |||
==== Zeichen ersetzen ==== | ==== Zeichen ersetzen ==== | ||
− | : <syntaxhighlight lang="bash">echo "123abcABC" | tr "abc" "xyz" </syntaxhighlight> | + | : <syntaxhighlight lang="bash">$ echo "123abcABC" | tr "abc" "xyz" </syntaxhighlight> |
oder | oder | ||
− | : <syntaxhighlight lang="bash">echo "123abcABC" | tr "a-c" "x-z" </syntaxhighlight> | + | : <syntaxhighlight lang="bash">$ echo "123abcABC" | tr "a-c" "x-z" </syntaxhighlight> |
: ergibt <code> 123xyzABC </code> | : ergibt <code> 123xyzABC </code> | ||
Gross/Klein umwandeln: | Gross/Klein umwandeln: | ||
− | : <syntaxhighlight lang="bash">echo "123abcABC" | tr "a-z" "A-Z" </syntaxhighlight> | + | : <syntaxhighlight lang="bash">$ echo "123abcABC" | tr "a-z" "A-Z" </syntaxhighlight> |
: ergibt <code> 123ABCABC </code> | : ergibt <code> 123ABCABC </code> | ||
Zeile 25: | Zeile 27: | ||
Mit -c (--complement) Option werden alle Zeichen ausser jenen in SET1 ersetzt: | Mit -c (--complement) Option werden alle Zeichen ausser jenen in SET1 ersetzt: | ||
− | : <syntaxhighlight lang="bash">echo "123abcABC" | tr -c "abc" "0" </syntaxhighlight> | + | : <syntaxhighlight lang="bash">$ echo "123abcABC" | tr -c "abc" "0" </syntaxhighlight> |
: ergibt <code> 000abc0000 </code> | : ergibt <code> 000abc0000 </code> | ||
Das überzälige 0 am Schluss ist das unsichtbare <code>\n</code> des <code> echo </code> Kommandos. Es gibt 2 Möglichkeiten das zu verhindern: | Das überzälige 0 am Schluss ist das unsichtbare <code>\n</code> des <code> echo </code> Kommandos. Es gibt 2 Möglichkeiten das zu verhindern: | ||
− | :<syntaxhighlight lang="bash">echo -n "123abcABC" | tr -c "abc" "0"</syntaxhighlight> | + | :<syntaxhighlight lang="bash">$ echo -n "123abcABC" | tr -c "abc" "0"</syntaxhighlight> |
:oder | :oder | ||
− | :<syntaxhighlight lang="bash">echo "123abcABC" | tr -c "abc\n" "0"</syntaxhighlight> | + | :<syntaxhighlight lang="bash">$ echo "123abcABC" | tr -c "abc\n" "0"</syntaxhighlight> |
: ergibt <code> 000abc000 </code> | : ergibt <code> 000abc000 </code> | ||
+ | |||
==== Zeichen komprimieren -s (--squeeze-repeats) ==== | ==== Zeichen komprimieren -s (--squeeze-repeats) ==== | ||
<code>-s</code> ersetzt eine Folge von wiederholtem Auftreten eines Zeichens durch ein (anderes) Zeichen. | <code>-s</code> ersetzt eine Folge von wiederholtem Auftreten eines Zeichens durch ein (anderes) Zeichen. | ||
− | Nur mit SET1: | + | Nur mit SET1 wird das Zeichen in SET1 komprimiert: |
− | : <syntaxhighlight lang="bash">echo "SI Wiki" | tr -s " " </syntaxhighlight> | + | : <syntaxhighlight lang="bash">$ echo "SI Wiki" | tr -s " " </syntaxhighlight> |
: ergibt <code>SI Wiki</code> | : ergibt <code>SI Wiki</code> | ||
− | mit SET1 und SET2: | + | mit SET1 und SET2 werden die Zeichen aus SET1 komprimiert und mit SET2 ersetzt: |
− | : <syntaxhighlight lang="bash">echo "SI Wiki" | tr -s " " ":" </syntaxhighlight> | + | : <syntaxhighlight lang="bash">$ echo "SI Wiki" | tr -s " " ":" </syntaxhighlight> |
: ergibt <code>SI:Wiki</code> | : ergibt <code>SI:Wiki</code> | ||
+ | |||
==== Zeichen löschen -d (--delete) ==== | ==== Zeichen löschen -d (--delete) ==== | ||
Alle Vorkommen der Zeichen aus SET1 werden gelöscht. | Alle Vorkommen der Zeichen aus SET1 werden gelöscht. | ||
− | : <syntaxhighlight lang="bash">echo "SI Wiki" | tr -d " i" </syntaxhighlight> | + | : <syntaxhighlight lang="bash">$ echo "SI Wiki" | tr -d " i" </syntaxhighlight> |
: ergibt <code>SIWk</code> | : ergibt <code>SIWk</code> | ||
− | === Einige | + | |
+ | === Einige Beispiele === | ||
+ | |||
+ | ==== Zufallszahl erzeugen ==== | ||
+ | : <syntaxhighlight lang="bash">$ tr -cd 0-9 </dev/urandom | head -c 7 </syntaxhighlight> | ||
+ | |||
+ | Liest aus /dev/urandom, bildet durch Komplement alles Nicht-Zahlen (-c), löscht alle diese Nicht-Zahlen (-d), und gibt die ersten 7 Zeichen (head -c 7) davon aus. | ||
+ | |||
+ | |||
+ | ==== Jedes Wort im Satz auf eine neue Zeile ==== | ||
+ | : <syntaxhighlight lang="bash">$ echo "Jedes Wort im Satz auf eine neue Zeile" | tr -cs [:alnum:] "\n" </syntaxhighlight> | ||
+ | |||
+ | Sammelt das Komplement (-c) aller alphanumerischen Zeichen und ersetzt und komprimiert diese Menge nicht-alphanumerischer Zeichen durch ein Newline. | ||
+ | |||
+ | |||
+ | ==== Alle leeren Zeilen einer Datei löschen ==== | ||
+ | : <syntaxhighlight lang="bash">$ tr -s "\n" < eingabedatei.txt > ausgabedatei.txt </syntaxhighlight> | ||
+ | |||
+ | Liest die eingabedatei.txt (<), wandelt alle mehrfach hintereinander vorkommenden Newlines in ein einzelnes Newline (-s) und schreibt das Ergebnis in die ausgabedatei.txt (>). |
Version vom 17. Mai 2021, 16:30 Uhr
- Mit
tr
können Zeichen ersetzt, komprimiert oder gelöscht werden.
tr [option]... SET1 [SET2]
-
tr
akzeptiert zwei Zeichensätze SET1 und SET2, in der Regel mit der gleichen Länge, und ersetzt die Zeichen des ersten Satzes durch die entsprechenden Zeichen des zweiten Satzes.
- Ein SET ist im Grunde eine Zeichenkette, einschließlich Sonderzeichen als interpretierte Folgen mit Backslash.
Inhaltsverzeichnis
Zeichen ersetzen
-
$ echo "123abcABC" | tr "abc" "xyz"
oder
-
$ echo "123abcABC" | tr "a-c" "x-z"
- ergibt
123xyzABC
Gross/Klein umwandeln:
-
$ echo "123abcABC" | tr "a-z" "A-Z"
- ergibt
123ABCABC
Mit -c (--complement) Option werden alle Zeichen ausser jenen in SET1 ersetzt:
-
$ echo "123abcABC" | tr -c "abc" "0"
- ergibt
000abc0000
Das überzälige 0 am Schluss ist das unsichtbare \n
des echo
Kommandos. Es gibt 2 Möglichkeiten das zu verhindern:
$ echo -n "123abcABC" | tr -c "abc" "0"
- oder
$ echo "123abcABC" | tr -c "abc\n" "0"
- ergibt
000abc000
Zeichen komprimieren -s (--squeeze-repeats)
-s
ersetzt eine Folge von wiederholtem Auftreten eines Zeichens durch ein (anderes) Zeichen.
Nur mit SET1 wird das Zeichen in SET1 komprimiert:
-
$ echo "SI Wiki" | tr -s " "
- ergibt
SI Wiki
mit SET1 und SET2 werden die Zeichen aus SET1 komprimiert und mit SET2 ersetzt:
-
$ echo "SI Wiki" | tr -s " " ":"
- ergibt
SI:Wiki
Zeichen löschen -d (--delete)
Alle Vorkommen der Zeichen aus SET1 werden gelöscht.
-
$ echo "SI Wiki" | tr -d " i"
- ergibt
SIWk
Einige Beispiele
Zufallszahl erzeugen
-
$ tr -cd 0-9 </dev/urandom | head -c 7
Liest aus /dev/urandom, bildet durch Komplement alles Nicht-Zahlen (-c), löscht alle diese Nicht-Zahlen (-d), und gibt die ersten 7 Zeichen (head -c 7) davon aus.
Jedes Wort im Satz auf eine neue Zeile
-
$ echo "Jedes Wort im Satz auf eine neue Zeile" | tr -cs [:alnum:] "\n"
Sammelt das Komplement (-c) aller alphanumerischen Zeichen und ersetzt und komprimiert diese Menge nicht-alphanumerischer Zeichen durch ein Newline.
Alle leeren Zeilen einer Datei löschen
-
$ tr -s "\n" < eingabedatei.txt > ausgabedatei.txt
Liest die eingabedatei.txt (<), wandelt alle mehrfach hintereinander vorkommenden Newlines in ein einzelnes Newline (-s) und schreibt das Ergebnis in die ausgabedatei.txt (>).