我被赋予了从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
答案 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