dize kabuk betiğinde boşluktan önce ve önce nasıl bölünür?


Yanıtlar:


33

Jasonwryan'ın önerisine ek olarak şunları kullanabilirsiniz cut:

echo $var | cut -d' ' -f1

Yukarıda cuts echoboşluk sınırlayıcı (ile çıkış -d ' '() ve çıkışları ilk alan -f1)


çalışmıyor. Ben zaten kullandım. komutun bulunmadığını söylüyor.
surbhi

3
@surbhi Komut bulunamadı ne diyor? cutstandart bir yardımcı programdır. Komut dosyanız muhtemelen başka bir yerde hata veriyor. Daha genel olarak, asla “çalışmıyor” demeyin. Her zaman tam olarak hangi kodu çalıştırdığınızı, tam olarak ne olduğunu söyleyin ve hata iletilerini kopyalayıp yapıştırın.
Gilles 'SO- kötü olmayı bırak'

Bu cevap en özlü ve doğrudan yol olduğu için kabul edilmelidir. Elbette verilen örnekten daha karmaşık durumlarda işe yaramaz.
Dan Nguyen

10

Bunu yapmanın düzgün bir yolu, bir dizeyi boşluklara bölmek için bir bash dizisi kullanmaktır. Bir diziyi basitçe parantez kullanarak bildirebilirsiniz:

var="129 148     181"
vars=( $var )
echo "First  word of var: '${vars[0]}'"
echo "Second word of var: '${vars[1]}'"
echo "Third  word of var: '${vars[2]}'"
echo "Number of words in var: '${#vars[@]}'"

bu komut bulunamadı diyor
surbhi

Bu bash kullanarak bağlıdır. Farklı bir kabuk kullanıyorsanız, çalışmayabilir. echo $SHELLgöstermelidir: /bin/bashveya benzeri.
gogoud

çalışmıyor zsh; (
TonyH

Bu iş yapar ZSH zoom="one two three"; declare -a zoomie=( $( echo $zoom | cut -d' ' -f1- ) ); echo ${zoomie[2]};
tonyh
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.