I am trying to use a file containing IP addresses as the basis for searching through a Cisco firewall configuration file. Normally, I would use something like:
for i in $(cat ip.file); do grep $i fw.config; done
But doing that returns absolutely nothing. If I put the above script into a file and execute it with the bash -xv flags, each line returns something like this:
+ 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.config is exactly what I want to happen, but I get nothing back from this command.
I know of the grep -f option, but that also returns nothing. I am not an experienced coder, so I might be overlooking something obvious.
It looks like
ip.fileis in DOS format and has\r\nline endings. Rundos2unixon it to convert to UNIX format. This will get rid of the errant\rcarriage returns that are messing upgrep.By the way, you can use
grep -f FILEto passgrepa list of patterns to search for. It will then do a single pass searching for any of those patterns.