GNU/Linux >> Tutoriels Linux >  >> Linux

passer grep dans une variable bash

Voici ce qui se passe :

var2=$("$var1" | (grep -Eio '\b[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}\b'))
       ^^^^^^^ Execute the program named (what is in variable var1).

Vous devez faire quelque chose comme ceci :

var2=$(echo "$var1" | grep -Eio '\b[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}\b')

ou même

var2=$(awk 'NR==2' $file | grep -Eio '\b[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}\b')

Je pense que c'est une façon trop compliquée de procéder, mais si vous voulez juste que votre script fonctionne, essayez ceci :

#!/bin/bash

file="email.txt"

var1=$(awk 'NR==2' $file)

var2=$(echo "$var1" | grep -Eio '\b[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}\b')

echo $var2

Je ne sais pas quoi file=$(myscript) était censé faire, mais sur la ligne suivante, vous voulez un nom de fichier comme argument de awk , vous devez donc simplement attribuer email.txt comme valeur de chaîne à file , ne pas exécuter une commande appelée myscript . $var1 n'est pas une commande (c'est juste une ligne de votre fichier texte), vous devez donc echo pour donner grep tout ce qui est utile pour travailler. Les parenthèses supplémentaires autour de grep sont redondants.


Linux
  1. les bases de grep

  2. Je voudrais stocker tous les arguments de ligne de commande d'un script Bash dans une seule variable

  3. Bash capturant la sortie de awk dans le tableau

  4. bash:placez les fichiers de liste dans une variable et mais la taille du tableau est 1

  5. Comment lire la dernière ligne d'un fichier texte dans une variable à l'aide de Bash ?

Bash declare Statement :Syntaxe et exemples

Variable d'exportation bash

Bash printf - Comment imprimer une variable dans Bash

Bash Scripting - Variables expliquées avec des exemples

Script bash (I)

Comment définir une variable d'environnement dans Bash