Gunakan ekspansi parameter:
t="MULTI: primary virtual IP for xyz/x.x.x.x:44595: 10.0.0.12"
searchstring="IP for"
rest=${t#*$searchstring}
echo $(( ${#t} - ${#rest} - ${#searchstring} ))
$rest berisi bagian dari $t setelah $searchstring. Oleh karena itu, posisi awal substring adalah panjang seluruh string dikurangi panjang $rest dikurangi panjang $searchstring itu sendiri.
Bahkan lebih baik dan cocok untuk lebih banyak kasus (pertimbangkan '#' versus '##' dan memiliki lebih dari satu contoh 'IP untuk') akan menghapus dari string yang cocok sampai akhir dan menggunakan panjang yang tersisa.
text="MULTI: primary virtual IP for xyz/x.x.x.x:44595: 10.0.0.12"
search="IP for"
prefix=${text%%$search*}
echo ${#prefix}
Bagaimana cara mengatur preferensi kayu manis di baris perintah?
bash - mengembalikan array dari fungsi dan menampilkan konten