4

Я ищу быстрый / простой способ разбить строку в ksh.

Он имеет различные числовые разделители (пробелы) между каждым элементом.

Пример:

value1 value2                  value3

Любые предложения / советы?

3 ответа3

5

Использование цикла for с входной строкой будет разбито на пробелы.

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

Урожайность

value1
value2
value3

или же

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

Урожайность

value1
value2
value3
3

Вы можете использовать массив.

LIST="value1  value2 value3"
set -A values $LIST
echo ${values[0]}

value1
0

Пропускание через sed и опционально grep тоже работает

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

Вы можете отбросить grep, если вы также отбросите кавычки, которые удаляют несколько пробелов, хотя может быть выполнено другое форматирование.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .