Mit Text arbeiten
Texte können ganz verschiedene Formen von Daten annehmen. Es können Dateinamen, Verzeichniss-Pfade, Spaltennamen und vieles mehr sein. Texte kommen so oft vor, dass rsh diverse Wege bereitstellt um mit ihnen zu arbeiten. Der Anwendungsfall entscheidet, welches am besten passt.
Texte in einfachen Anführungszeichen
Der einfachste Text in rsh ist der in einfachen
Anführungszeichen. Er wird mit dem '
Zeichen
umgeben. Hier der Text als Hallo Welt.
> 'Hallo Welt'
Hallo Welt
Text in einfachen Anführungszeichen belassen den Text wie er ist, womit sie ideal sind, um diverse Formen von Text zu enthalten.
Texte in doppelten Anführungszeichen
Für komplexere Formen, werden in rsh Texte in doppelte
Anführungszeichen gesetzt. Diese werden mit dem
'
Zeichen umgeben. Sie unterstützen die
Verwendung von Escape-Zeichen mit der Verwendung eines
\
.
Zum Beispiel kann das Hallo Welt von vorhin geschrieben werden
als, Hallo gefolgt von einen \n
um eine neue Linie
zu erzeugen, dann Welt. Das ganze in doppelten
Anführungszeichen.
> "Hallo\nWelt"
Hallo
Welt
Escape Zeichen werden verwendet um Zeichen einzugeben, die ansonsten schwer zu tippen wären.
rsh unterstützt aktuell folgende Escape Zeichen:
\"
- Doppeltes Anführungszeichen\'
- Einfaches Anführungszeichen\\
- Gegenstrich\/
- Vorwärtsstrich\b
- Rücktaste\f
- Vorschub\r
- Zeilenumschalt\n
- Neue Zeile (line feed)\t
- Tabulator-
\u{X...}
- Ein Unicode Zeichen, wobei der PlatzhalterX...
für ein bis sechs hexadezimale Ziffern steht (0-9, A-F)
Text Interpolation
Anwendungsfälle von komplexeren Text-Operationen benötigen eine neue Form von Text: Text Interpolation. Ein Weg um Texte zusammenzustellen, die sowohl aus rohem Text, als auch aus dem Ergebnis von laufenden Ausdrücken bestehen. Text Interpolation kombiniert diese Texte zusammen zu einem neuen Text-Ergebnis.
Die Text Interpolation wird mit $" "
und
$" "
gebildet.
Soll zum Beispiel eine Person per Namen gegrüsst werden, deren Namen in einer Variablen steht, dann sieht das so aus:
> let name = "Alice"
> $"greetings, ($name)"
greetings, Alice
Ein Ausdruck in ()
wird zuerst fertig ausgeführt.
Das Ergebnis wird zur Bildung des finalen Textes verwendet.
Text Interpolationen funktionieren mit einfachen
Anführungszeichen, $' '
, sowie mit
doppelten Anführungszeichen $" "
. Analog
unterstützen doppelte Anführungszeichen auch bei der Text
Interpolation Escape Zeichen, was einfache Anführungszeichen
nicht tun.
Seit Version 0.61 unterstützt rsh Escape Zeichen für Klammern.
So können die Zeichen (
und )
in einem
Text verwendet werden, ohne dass rsh auswerten will, was sich
dazwischen befindet.
> $"2 + 2 is (2 + 2) \(you guessed it!)"
2 + 2 is 4 (you guessed it!)
Texte aufsplitten
Der
split row
Befehl erstellt eine Liste aus einem Text, getrennt durch das
angegebene Trennzeichen. Zum Beispiel
let colors = ("red,green,blue" | split row
",")
erstellt die Liste [red green blue]
.
Der
split column
Befehl erstellt eine Tabelle aus einem Text, getrennt durch ein
angegebenes Trennzeichen. Zum Beispiel
let colors = ("red,green,blue" | split column
",")
erstellt eine Tabelle mit den Elementen als Spalte.
Schliesslich trennt der
split chars
Befehl einen Text in seine Zeichen auf.
str
Befehl
Der
Viele Text Befehle sind Sub-Befehle des
str
Befehls. Mit help str
wirden alle
Sub-Befehle ausgegeben.
Zum Beispiel kann geprüft werden, ob sich ein Zeichen in einem
Text befindet mit str contains
:
> "Hallo Welt" | str contains "W"
true
Texte schneiden
Die Seiten eines Textes werden mit dem
str trim
Befehl geschnitten. Standardmässig schneidet der
str trim
Befehl Leerraum von beiden Seiten des Textes. Zum Beispiel:
> ' My string ' | str trim
My string
Mit den Optionen --right
und
--left
kann die Seite angegeben werden, auf der
geschnitten werden soll.
Um ein spezifisches Zeichen weg zu schneiden, wird
--char <Character>
verwendet. Hier ein
Beispiel mit dieser Option:
> '=== Rsh shell ===' | str trim -r -c '='
=== Rsh shell
Subtexte
Subtexte sind Stücke von Texten. Sie haben einen Start- und einen Endpunkt. Hier ein Beispiel eines Substrings:
> 'Hallo Welt!' | str index-of 'o'
4
> 'Hallo Welt!' | str index-of 'l'
8
> 'Hallo Welt!' | str substring 4..8
o We
Texte ausrichten (padding)
Mit den Befehlen
[str lpad
](/commands/docs/str_lpad.md) und
str rpad
können Texte der angegeben Ausrichtung nach erweitert werden.
Dieses Padding erweitert den Text bis zur angegebenen Länge, zum
Beispiel:
> '1234' | str lpad -l 10 -c '0'
0000001234
> '1234' | str rpad -l 10 -c '0' | str length
10
Texte umkehren
Dies kann mit dem
str reverse
Befehl ganz einfach erreicht werden.
> 'rsh' | str reverse
llehsuN
> ['rsh' 'is' 'cool'] | str reverse
╭───┬─────────╮
│ 0 │ llehsuN │
│ 1 │ si │
│ 2 │ looc │
╰───┴─────────╯
Texte parsen
Mit dem
parse
Befehl können Texte in Spalten geparst werden. Zum Beispiel:
> 'rsh is the best' | parse '{shell} is {type}'
╭───┬─────────┬──────────╮
│ # │ shell │ type │
├───┼─────────┼──────────┤
│ 0 │ rsh │ the best │
╰───┴─────────┴──────────╯
> 'Bash is kinda cringe' | parse --regex '(?P<shell>\w+) is (?P<type>[\w\s]+)'
╭───┬───────┬──────────────╮
│ # │ shell │ type │
├───┼───────┼──────────────┤
│ 0 │ Bash │ kinda cringe │
╰───┴───────┴──────────────╯
Texte konvertieren
Es gibt verschiedenste Wege Texte in und von anderen Typen zu konvertieren.
In einen Text
-
Mit
into string
. e.g.123 | into string
-
Mit Text Interpolation. e.g.
$'(123)'
-
Mit
build-string
. e.g.build-string (123)
Von einem Text
-
Mit
into <type>
. e.g.'123' | into int
Texte einfärben
Texte können eingefärbt werden mit dem
ansi
Befehl Zum Beispiel:
> $'(ansi purple_bold)This text is a bold purple!(ansi reset)'
ansi purple_bold
färbt den Text purpur.
ansi reset
stellt die Farbe wieder auf stadard.
(Tipp: Ein Zurückstellen der Farben mit
ansi reset
sollte nach jeder Farbänderung stehen)