Bir dizeyi ksh olarak bölme


4

Bir dizeyi ksh ile bölmenin hızlı / kolay bir yolunu arıyorum.

Her öğe arasında değişken sayı sınırlayıcıları (boşluklar) vardır.

Örnek:

value1 value2                  value3

Herhangi bir öneri / tavsiye?

Yanıtlar:


5

Giriş dizgisi ile bir for döngüsü kullanmak boşluk üzerinde bölünür.

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

Verim

value1
value2
value3

veya

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

Verim

value1
value2
value3

Çabuk, kolay, acısız. Doğru cevap için teşekkürler.
user9398

3

Bir dizi kullanabilirsiniz.

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

value1

0

Sed ve opsiyonel olarak grep ile borulama işleri

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

Başka biçimlendirme de olsa, birden çok boşluğu kaldıran tırnak işaretlerini de bırakırsanız grep'i düşürebilirsiniz.

LIST="value1  value2 value3" ;
echo $LIST | sed 's/[[:space:]]/\n/g'
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.