Welche Linux-Shell-Befehl gibt einen Teil eines Strings? [Duplikat]
Frage
Diese Frage bereits eine Antwort hier:
- Extract String in heftigen Schlag 20 Antworten
Ich möchte ein Linux-Befehl zu finden, die einen Teil der Zeichenfolge zurückgeben kann. In den meisten Programmiersprachen, es ist die substr()
Funktion. Hat bash jeden Befehl, die für diesen Zweck verwendet werden kann. Ich möchte in der Lage sein, so etwas zu tun ...
substr "abcdefg" 2 3
-. druckt cde
Im Anschluss ähnliche Frage:
Lösung
Wenn Sie einen Shell-Dienstprogramm suchen, so etwas zu tun, können Sie den cut
Befehl verwenden.
Ihr Beispiel nehmen, versuchen Sie:
echo "abcdefg" | cut -c3-5
was ergibt
cde
Wo -cN-M
erzählt den Schnittbefehl Spalten zurück N
M
, inklusive.
Andere Tipps
Von der bash manpage:
${parameter:offset}
${parameter:offset:length}
Substring Expansion. Expands to up to length characters of
parameter starting at the character specified by offset.
[...]
Oder, wenn Sie nicht sicher sind, bash
zu haben, betrachten cut
verwendet wird.
In "reiner" bash haben Sie viele Werkzeuge für die (Unter-) String-Manipulation, vor allem, aber nicht ausschließlich in
In der bash können Sie dies versuchen: Weitere Proben in Linux Documentation Project stringZ=abcABC123ABCabc
# 0123456789.....
# 0-based indexing.
echo ${stringZ:0:2} # prints ab
expr(1)
hat eine substr subcommand:
expr substr <string> <start-index> <length>
Dies kann nützlich sein, wenn Sie bash nicht haben (vielleicht Embedded Linux) und Sie nicht wollen, die extra „echo“ -Prozess Sie müssen Schnitt verwenden (1).
${string:position:length}