Tr Kommando: Unterschied zwischen den Versionen
Sigi (Diskussion | Beiträge) K (→Caesar-Verschlüsselung / monoalphabetische Substitution) |
Sigi (Diskussion | Beiträge) K (→Caesar-Verschlüsselung / monoalphabetische Substitution) |
||
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt) | |||
Zeile 84: | Zeile 84: | ||
==== Caesar-Verschlüsselung / monoalphabetische Substitution ==== | ==== Caesar-Verschlüsselung / monoalphabetische Substitution ==== | ||
+ | Caeser Verschlüsselung mit Schlüssel "d", also einer Verschiebung um 4 Buchstaben unter Beibehalt von Gross- Kleinsbuchstaben. | ||
+ | |||
+ | Jedes Zeichen in a-z resp. A-Z wird um 4 Stellen verschoben zu e-zabcd resp. E-ZABCD. | ||
+ | |||
+ | |||
: <syntaxhighlight lang="bash">$ echo "Das ist eine geheime Nachricht" | tr 'a-zA-Z' 'e-zabcdE-ZABCD'</syntaxhighlight> | : <syntaxhighlight lang="bash">$ echo "Das ist eine geheime Nachricht" | tr 'a-zA-Z' 'e-zabcdE-ZABCD'</syntaxhighlight> | ||
Zeile 93: | Zeile 98: | ||
: ergibt Klartext "<code>Das ist eine geheime Nachricht</code>" | : ergibt Klartext "<code>Das ist eine geheime Nachricht</code>" | ||
− | |||
− | |||
− |
Aktuelle Version vom 17. Mai 2021, 17:36 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. - SET2 wird an die Länge von SET1 angepasst entweder durch Kürzung, oder durch Erweiterung indem das letzte Zeichen aus SET2 bis zur Länge von SET1 wiederholt wird. Die -t Option invertiert dieses Verhalten.
- 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 alle Nicht-Zahlen (-c 0-9), 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 (>).
Caesar-Verschlüsselung / monoalphabetische Substitution
Caeser Verschlüsselung mit Schlüssel "d", also einer Verschiebung um 4 Buchstaben unter Beibehalt von Gross- Kleinsbuchstaben.
Jedes Zeichen in a-z resp. A-Z wird um 4 Stellen verschoben zu e-zabcd resp. E-ZABCD.
-
$ echo "Das ist eine geheime Nachricht" | tr 'a-zA-Z' 'e-zabcdE-ZABCD'
- ergibt Geheimtext "
Hew mwx imri kilimqi Reglvmglx
"
zum Entschlüsseln des Geheimtextes wird einfach SET1 und SET2 vertauscht:
-
$ echo "Hew mwx imri kilimqi Reglvmglx" | tr 'e-zabcdE-ZABCD' 'a-zA-Z'
- ergibt Klartext "
Das ist eine geheime Nachricht
"