Comment grep un fichier en utilisant les paramètres de recherche d'un autre fichier
Je suis en train d'utiliser un fichier contenant les adresses IP comme base pour la recherche à travers un pare-feu Cisco fichier de configuration. Normalement, je voudrais utiliser quelque chose comme:
for i in $(cat ip.file); do grep $i fw.config; done
Mais cela revient absolument rien. Si j'ai mis le script ci-dessus dans un fichier et de l'exécuter avec le bash -xv de drapeaux, chaque ligne renvoie à quelque chose comme ceci:
+ for i in '`cat ip.file`'
+ grep $'1.2.3.4\r' fw.config (each IP address is different)
grep 1.2.3.4 fw.la config est exactement ce que je veux, mais je ne reçois rien en retour de cette commande.
Je sais de la commande grep-f option, mais qui ne retourne rien. Je ne suis pas un codeur expérimenté, donc j'ai peut-être oublié quelque chose d'évident.
source d'informationauteur Eric
Vous devez vous connecter pour publier un commentaire.
Il ressemble
ip.file
est en format DOS et a\r\n
les fins de ligne. Exécuterdos2unix
pour convertir au format UNIX. Ce va se débarrasser de l'errant\r
retours qui sont gâchergrep
.Par la manière, vous pouvez utiliser
grep -f FILE
passergrep
une liste des patrons de la recherche. Il procédera ensuite à un seul passage de la recherche pour l'un de ces modèles.GNU grep,
Son conseillé également de ne pas utiliser de boucle for avec un chat. (Si vous le faites, vous devriez changer FI $'\n'). Utiliser pendant la lecture de la boucle de la place.