Ini hasilnya:
3,aac-lc, 93.8, aaclc, 77.3, h.264, 1024.6, h.264, 1029.1, 31, 31, 0,0,0.000000,31,31,0,0,0.000000,7,0,0,0.000000,30,1280 720,10,0,0,0.000000,30,1280 720
Saya mencoba dengan 2 skenario:
Menyimpan dalam array
@arr=split(',',$stats); echo "statistics: $stats"
Menyimpan dalam variabel
echo $stats | cut -d ',' -f | read s1 echo $s1
Tapi tidak ada skenario yang berhasil.
awk '{ split("3,aac-lc, 93.8, aaclc, 77.3, h.264, 1024.6, h.264, 1029.1, 31, 31, 0,0,0.000000,31,31,0,0,0.000000,7,0,0,0.000000,30,1280 720,10,0,0,0.000000,30,1280 720 ",arr,","); print arr[1]; }'
ATAUecho "3,aac-lc, 93.8, aaclc, 77.3, h.264, 1024.6, h.264, 1029.1, 31, 31, 0,0,0.000000,31,31,0,0,0.000000,7,0,0,0.000000,30,1280 720,10,0,0,0.000000,30,1280 720" | awk '{ split($0,arr,","); print arr[1]; }'
Ini seharusnya bekerja.Jawaban:
Anda dapat menggunakan sesuatu seperti ini, untuk satu baris input:
Demo:
Kredit: Membagi string berdasarkan pembatas di bash? jawaban oleh Johannes Schaub . Periksa jawaban lain di sana juga.
sumber
Cuplikan pertama Anda tidak seperti sintaks shell. Itu sintaks Perl yang benar.
Cuplikan kedua Anda tidak digunakan
cut
dengan benar; Saya tidak tahu apa yang Anda maksudkan.Shell memiliki built-in string splitting construct: ketika Anda menulis
$somevar
tanpa tanda kutip, shell pertama-tama mencari nilai variabelsomevar
, kemudian membagi nilai itu menjadi kata-kata yang terpisah pada karakter yang ditentukan olehIFS
, dan akhirnya mengartikan setiap kata sebagai sebuah bola pola (file wildcard). Jadi, Anda dapat memisahkan string dengan mengaturIFS
ke karakter pemisah dan untuk sementara mematikan globbing.Perhatikan bahwa jika bidang berisi spasi putih, elemen array akan mempertahankan spasi putih itu. Jika Anda ingin membagi di semua spasi putih dan juga koma, atur
IFS=', '
. Perhatikan bahwaIFS
bukan string untuk dipecah tetapi serangkaian karakter untuk dipecah; baik spasi atau koma akan merupakan pemisah. Selain itu, ada aturan khusus untuk spasi putih: setiap urutan nol atau lebih banyak ruang diikuti oleh koma diikuti oleh nol atau lebih banyak ruang akan membentuk satu pemisah, dan setiap urutan satu atau lebih spasi juga akan membentuk pemisah.Jika Anda hanya ingin menghapus spasi di awal atau akhir bidang, Anda harus melakukannya elemen demi elemen.
sumber
sumber