我被赋予了一个任务,看看我们是否在宣传一个ip地址列表(3000)。手动执行并不是一个好主意,所以我复制了我们在文件中广告的所有IP地址。现在我只需要创建一个bash脚本并将ip地址列表提供给脚本,这样它就可以找到文件中的ip地址,并显示正在公布的ip地址列表。如果找到则将其保存在一个文件中,如果不在另一个文件中。这就是我到目前为止所拥有的。这个脚本的问题是我必须手动输入每个ip地址。我如何通过知识产权地址列表提供的文件将被列入我们广告的IP地址列表的文件中。非常感谢你的进步。
#!/bin/bash
while true; do
echo -e "IP address: \c"
read ip
if grep --color "$ip" "ips"; then
echo $ip "was found"
echo $ip >> found
else
echo $ip "was NOT found"
echo $ip >> notFound
fi
done
答案 0 :(得分:3)
如果您对这两个文件进行排序,则可以使用comm
命令:
sort all_ip_addresses > all_ip_addresses_sorted
sort adverted_ip_address > advertised_ip_address_unsorted
comm -23 all_ip_addresses_sorted advertised_ip_addresses_sorted
将显示未公布的IP地址,并且:
comm -12 all_ip_addresses_sorted advertised_ip_addresses_sorted
将显示广告的IP地址。
您还可以通过使用进程替换来避免创建单独的已排序文件:
comm -23 <(sort all_ip_addresses) <(sort advertised_ip_addresses)
答案 1 :(得分:2)
$ script < list_of_ip_addresses
这就是你所需要的一切。
答案 2 :(得分:2)
更好的脚本:
while read ip
do
grep "$ip" "$ips" > /dev/null 2>&1 && echo "$ip" >> ip.found || echo "$ip" >> ip.notfound
done
将脚本命名为“searchip.sh” 假设您的输入文件是“iplist”,设置变量并调用如下:
ips=ips
cat iplist | sh searchip.sh
或
sh searchip.sh < iplist
然后你得到两个文件,一个是ip找到的,另一个是ip not found 你需要的是shell I / O重定向。