Je ne peux pas comprendre cela. J'ai besoin de regarder toutes les lignes dans le fichier et de vérifier s'il s'agit d'un mot correspondant à la variable
J'ai commencé par la lecture de commandement, mais je ne sais pas ce que je suis censé utiliser après cela, j'ai essayé grep
mais je l'ai probablement utilisé à tort.
while read line; do
if [ $condition ] ;then echo "ok" fi
done<file.txt
Voici un quickie pour vous, tout simplement ce que nous faisons est
Ligne 1: Tout en lisant le fichier dans la variable line
Ligne 2: Faites correspondre une regex, écho le $line
si correspondant au mot "oiseau" écho cette ligne. Faites toutes les actions dont vous avez besoin ici, dans cette déclaration.
Ligne 3: fin de la boucle, quels pipes dans le fichier foo.text
#!/bin/bash
while read line; do
if [[ $line =~ bird ]] ; then echo $line; fi
done <foo.text
Notez que "oiseau" est une regex. Afin que vous puissiez le remplacer par exemple: bird.*Word
Pour faire correspondre la même ligne avec une expression régulière.
Essayez-le avec un fichier comme tellement, appelé foo.text
Avec le contenu:
my dog is brown
her cat is white
the bird is the Word
Le moyen plus facile de le faire, utilise grep
(ou egrep
).
grep bird file.txt
Voici un script simple qui passe dans deux arguments (nom de fichier et variable) ... Il y a aussi une version codée en dur que cela.
#!/bin/bash
[ $# -lt 2 ] && echo "wrong number of args" && exit 1
file=$1
var=$2
while read line; do
if echo "$line" | grep -q "$var"; then echo "ok"; fi
done < "$file"
exit 0
[user@myserver ~]$ myscript file.txt some_text
Alternativement, si vous préférez coder le fichier (et la variable) plutôt que de passer comme des arguments ...
while read line; do
if echo "$line" | grep -q "some_text"; then echo "ok"; fi
done < file.txt