将IP地址列表与具有IP地址的另一个文件匹配

时间:2014-01-23 06:45:45

标签: bash

我被赋予了从ip地址的另一个文件中检索一长串IP地址的任务。我创建了这个bash脚本,但它不能很好地工作。执行脚本后,我检查名为“found”的文件没有任何内容,当我检查名为“notfound”的文件时,大约有60个ip地址。在这两个文件中,总共必须有1500个ip地址。有两个文件; 1.要检索的IP地址列表(findtheseips.txt),2。要从中检索的IP地址列表(listips.txt)。任何人都可以帮助我使它工作。非常感谢你。我以这种方式运行脚本: ./ script findtheseips.txt

 #!/bin/bash

 declare -a ARRAY
 exec 10<&0
 exec < $1
 let count=0

 while read LINE; do
 ARRAY[$count]=$LINE
 if egrep "$LINE" listips.txt; then
    echo "$LINE" >> found
   else
    echo "$LINE" >> notfound
 fi
done

1 个答案:

答案 0 :(得分:1)

无需尝试使用exec或创建数组。

您可以从脚本的第一个参数read$1

除非您尝试进行扩展正则表达式匹配,否则不需要使用egrep

#!/bin/bash

while read LINE; do
    if grep "$LINE" listips.txt; then
        echo "$LINE" >> found
    else
        echo "$LINE" >> notfound
    fi
done < $1

这是一个全BASH解决方案。

#!/bin/bash

while read l1; do
    n=0
    while read l2; do
        if [[ $l1 == $l2 ]]; then
            echo "$l1" >> found
            ((n++))
        fi
    done < ips2
    if [ $n -eq 0 ]; then
        echo "$l1" >> notfound
    fi
done < $1