GNU/Linux >> Tutoriels Linux >  >> Linux

Renvoie une correspondance de regex dans un script Bash, au lieu de la remplacer

echo "TestT100String" | sed 's/[^0-9]*\([0-9]\+\).*/\1/'

echo "TestT100String" | grep -o  '[0-9]\+'

La méthode que vous utilisez pour mettre les résultats dans un tableau dépend quelque peu de la façon dont les données réelles sont récupérées. Il n'y a pas assez d'informations dans votre question pour pouvoir bien vous guider. Cependant, voici une méthode :

index=0
while read -r line
do
    array[index++]=$(echo "$line" | grep -o  '[0-9]\+')
done < filename

Voici une autre méthode :

array=($(grep -o '[0-9]\+' filename))

Vous pouvez le faire uniquement en bash en utilisant le double crochet [[ ]] opérateur de test, qui stocke les résultats dans un tableau appelé BASH_REMATCH :

[[ "TestT100String" =~ ([0-9]+) ]] && echo "${BASH_REMATCH[1]}"

Linux
  1. Bash Echo La ligne de commande exécutée sur la ligne de commande elle-même (pas dans un script) ?

  2. Simulation de la touche ENTRÉE dans le script bash

  3. N'importe quel moyen de quitter le script bash, mais sans quitter le terminal

  4. Bash Shell Script - Recherchez un indicateur et saisissez sa valeur

  5. Comment vérifier si un fichier existe dans un répertoire spécifique dans un script bash ?

Remplacement de chaîne dans Bash

35 exemples de scripts bash

Comment exécuter un script bash

Imprimer la sortie de l'instruction cat dans la boucle de script bash

Portée variable pour les scripts shell bash et les fonctions dans le script

Vérifiez si l'un des paramètres d'un script bash correspond à une chaîne