bagaimana cara membagi string setelah dan sebelum spasi dalam skrip shell?


Jawaban:


35

Selain saran jasonwryan , Anda dapat menggunakan cut:

echo $var | cut -d' ' -f1

Di atas cutadalah echooutput dengan pembatas ruang ( -d ' ') dan menampilkan bidang pertama ( -f1)


ini tidak bekerja. saya sudah menggunakannya. katanya perintah tidak ditemukan.
surbhi

3
@urbi Apa kata perintah tidak ditemukan? cutadalah utilitas standar. Skrip Anda mungkin memiliki kesalahan di tempat lain. Secara umum, jangan pernah mengatakan "itu tidak berfungsi". Selalu katakan persis kode apa yang Anda jalankan, apa yang terjadi, dan salin dan tempel pesan kesalahan.
Gilles 'SANGAT berhenti menjadi jahat'

Jawaban ini harus diterima, karena itu cara yang paling ringkas dan langsung. Tentu saja itu tidak akan berfungsi dalam kasus yang lebih rumit daripada contoh yang diberikan.
Dan Nguyen

10

Cara yang rapi untuk melakukan ini adalah dengan menggunakan bash array untuk membagi string pada spasi. Anda dapat mendeklarasikan sebuah array hanya dengan menggunakan tanda kurung:

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[@]}'"

ini mengatakan perintah tidak ditemukan
surbhi

Itu tergantung pada Anda menggunakan bash. Jika Anda menggunakan shell yang berbeda, shell itu mungkin tidak berfungsi. echo $SHELLharus menunjukkan: /bin/bashatau serupa.
gogoud

tidak berfungsi zsh; (
TonyH

Ini berfungsi di ZSH zoom="one two three"; declare -a zoomie=( $( echo $zoom | cut -d' ' -f1- ) ); echo ${zoomie[2]};
TonyH
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.