GNU/Linux >> Znalost Linux >  >> Linux

Jak najít index slova v řetězci v bash?

Bash provádí dělení slov v řetězcích zcela sám – ve skutečnosti častěji než ne, vyhnout se tomu je problém a důvod citování je tak důležitý. Ve vašem případě je snadné to využít:stačí vložit řetězec do pole bez uvozovek – bash použije dělení slov k oddělení jednotlivých prvků. Za předpokladu, že váš řetězec je uložen v proměnné $str ,

ar=($str) # no quotes!

vrátí pole 5 prvků. Váš index pole je index vašeho slova (počítá se od 0, jako ve většině skriptovacích a programovacích jazyků), tj. k „věku“ se přistupuje pomocí

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

nebo, pokud potřebujete najít index prvku podle obsahu, smyčkou přes pole, tj.

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"

Nahradit *Věk věkem – toto odstraní vše před „Věk“:

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

Získejte cokoli před „Věk“

$ echo ${FOO/Age*/}
Name

Získejte délku tohoto řetězce (což je index "Věk"):

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

Linux
  1. Jak zjistím maximální velikost zásobníku?

  2. Jak hledat přesné slovo, pokud má řetězec v sobě tečku

  3. Jak najít výchozího správce souborů?

  1. Jak rychle změnit první slovo v příkazu Bash?

  2. bash - vyhledá pozici indexu řetězce podřetězce

  3. Jak mohu zkontrolovat doslovné znaky řetězce příkazu bash?

  1. Jak rozdělit řetězec ve skriptu Bash

  2. Jak najít délku struny v Bash [Rychlý tip]

  3. Jak zkontrolovat, zda řetězec obsahuje podřetězec v Bash