GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana menemukan indeks kata dalam sebuah string di bash?

Bash melakukan pemisahan kata dalam string dengan sendirinya – pada kenyataannya, lebih sering daripada tidak, menghindari itu adalah masalah, dan alasan mengutip sangat penting. Sangat mudah untuk memanfaatkannya dalam kasus Anda:cukup masukkan string Anda ke dalam array tanpa mengutipnya - bash akan menggunakan pemisahan kata untuk memisahkan elemen individual. Dengan asumsi string Anda disimpan dalam variabel $str ,

ar=($str) # no quotes!

akan mengembalikan array 5 elemen. Indeks array Anda adalah indeks kata Anda (menghitung dari 0, seperti di sebagian besar bahasa skrip dan pemrograman), yaitu "Umur" diakses menggunakan

${ar[1]}  # 0 => Name, 1 => Age, 2 => Sex, 3 => ID, 4 => Address

atau, jika Anda perlu menemukan indeks elemen berdasarkan konten, lewati larik, yaitu

function el_index {
    cnt=0; for el in "${ar[@]}"; do
        [[ $el == "$1" ]] && echo $cnt && break
        ((++cnt))
    done
}
el_index "Age" # => 1

$ export FOO="Name   Age Sex  ID         Address"

Ganti *Usia dengan Usia -- ini akan menghapus apa pun sebelum "Usia":

$ echo ${FOO/*Age/Age}
Age Sex ID Address

Dapatkan apa saja sebelum "Age"

$ echo ${FOO/Age*/}
Name

Dapatkan panjang string tersebut (yang merupakan indeks "Umur"):

$ BEGIN=${FOO/Age*/}
$ echo ${#BEGIN}
7

Linux
  1. Bagaimana cara menemukan ukuran tumpukan maksimum?

  2. Cara mem-pipe hasil 'find' ke mv di Linux

  3. Bagaimana saya bisa memeriksa karakter kata demi kata dari string perintah bash?

  1. Cara Memisahkan String dalam Skrip Bash

  2. Bagaimana cara menemukan nomor baris di Bash ketika terjadi kesalahan?

  3. Bagaimana cara menemukan UUID dari sistem file

  1. Cara Memeriksa apakah String Berisi Substring di Bash

  2. Bagaimana saya bisa menambahkan string ke awal setiap file dalam folder di bash?

  3. Cara memahami kata yang tepat jika string memiliki titik di dalamnya