Trennen Sie einen String in ksh

15847
user9398

Ich suche nach einer schnellen / einfachen Möglichkeit, eine Zeichenfolge in ksh aufzuteilen.

Die Anzahl der Trennzeichen (Leerzeichen) zwischen den einzelnen Elementen ist unterschiedlich.

Beispiel:

value1 value2 value3 

Anregungen / Ratschläge?

4

3 Antworten auf die Frage

5
Tim Desjardins

Die Verwendung einer for-Schleife mit der Eingabezeichenfolge wird auf Leerzeichen aufgeteilt.

LIST="value1 value2 value3" for x in $LIST ; do echo $x done 

Erträge

value1 value2 value3 

oder

LIST="value1 value2 value3" set -A STRING "$LIST" for x in $STRING ; do echo $x done 

Erträge

value1 value2 value3 
Schnell, einfach, schmerzlos. Danke für die überzeugende Antwort. user9398 vor 14 Jahren 0
3
Richard Hoskins

Sie können ein Array verwenden.

LIST="value1 value2 value3" set -A values $LIST echo $  value1 
0
Martin Mann

Piping durch sed und optional grep funktioniert auch

LIST="value1 value2 value3" ; echo "$LIST" | sed 's/[[:space:]]/\n/g' | grep . 

Sie können das grep löschen, wenn Sie auch die Anführungszeichen löschen, wodurch mehrere Leerzeichen entfernt werden, obwohl andere Formatierungen vorgenommen werden können.

LIST="value1 value2 value3" ; echo $LIST | sed 's/[[:space:]]/\n/g'