GNU/Linux >> Tutoriels Linux >  >> Linux

Comment trouver l'index d'un mot dans une chaîne en bash ?

Bash effectue tout seul la division des mots dans les chaînes - en fait, le plus souvent, éviter cela est un problème, et la raison pour laquelle la citation est si importante. Il est facile d'en tirer parti dans votre cas :placez simplement votre chaîne dans un tableau sans la citer - bash utilisera le fractionnement de mots pour séparer les éléments individuels. En supposant que votre chaîne est stockée dans la variable $str ,

ar=($str) # no quotes!

renverra un tableau de 5 éléments. Votre index de tableau est votre index de mots (en partant de 0, comme dans la plupart des langages de script et de programmation), c'est-à-dire que "Age" est accessible à l'aide de

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

ou, si vous avez besoin de trouver l'index d'élément par contenu, bouclez sur le tableau, c'est-à-dire

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"

Remplacez * Âge par Âge -- cela supprimera tout ce qui se trouve avant "Âge" :

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

Obtenez n'importe quoi avant "Âge"

$ echo ${FOO/Age*/}
Name

Obtenez la longueur de cette chaîne (qui est l'index de "Age") :

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

Linux
  1. Comment trouver la longueur d'une chaîne dans Bash [Astuce rapide]

  2. Comment vérifier si la chaîne contient une sous-chaîne dans Bash

  3. Comment puis-je trouver la taille de pile maximale ?

  4. Comment grep pour le mot exact si la chaîne contient un point

  5. Comment diriger les résultats de 'find' vers mv sous Linux

Comment utiliser la commande de lecture Bash

Comment trouver une chaîne ou un mot spécifique dans les fichiers et les répertoires

Comment vérifier si une chaîne contient une sous-chaîne dans Bash

Comment trouver une chaîne dans un fichier sous Linux

Comment rechercher et remplacer du texte, un mot ou une chaîne dans un fichier

Comment rechercher des fichiers avec des dizaines de critères avec la commande Bash Find