2017-02-04 14 views
-3

erhalten, wie man Text vor einer Begrenzungszeichenfolge in Bash erhält? Wie: str="Hello World! It's a nice Day!" Ich muss alles vor nice bekommen. echo $str sollte mir zeigen Hello World! It's a DankeBASH: Text vor Zeichenfolge

+1

https://www.gnu.org/software/bash/manual/bashref.html#Shell-Parameter-Expansion – melpomene

Antwort

2

Sie die % oder %% Operator verwenden:

$ str="Hello World! It's a nice Day!" ; echo "<${str%%nice *}>" 
<Hello World! It's a> 

Dies wird die längste Suffix entfernen.

Siehe bash reference manual:

${parameter%word}
${parameter%%word}

Das Wort erweitert wird ein Muster wie in Dateinamen Expansion zu erzeugen. Wenn das Muster einen hinteren Abschnitt des expandierten Wert von Parameter übereinstimmt, dann ist das Ergebnis der Expansion ist der Wert von Parameter mit der kürzesten Übereinstimmungsmuster (das ‚%‘ case) oder der längsten Übereinstimmungsmuster (der '%%' Fall wurde gelöscht. Wenn Parameter '@' oder '*' ist, wird die Musterentfernungsoperation nacheinander auf jeden Positionsparameter angewendet, und die Erweiterung ist die Ergebnisliste. Wenn Parameter eine Feldvariable mit ‚@‘ oder ‚*‘, die Modellentfernungsvorgang wird für jedes Mitglied des Arrays in wiederum angewendet subscripted ist, und die Expansion ist die sich ergebende Liste.

+0

Vielen Dank, es funktioniert wie ein Charme! – Chris