Linux 如何在另一个文件中查找ip地址列表
我的任务是查看我们是否在公布ip地址列表(3000)。手动操作不是一个好主意,所以我复制了我们在一个文件中公布的所有ip地址。现在,我只需要创建一个bash脚本,并将ip地址列表输入到脚本中,这样它就可以在文件中找到ip地址以及正在播发的ip地址列表。如果找到,请将其保存在一个文件中(如果不在其他文件中)。这就是我目前所拥有的。这个脚本的问题是我必须手动输入每个ip地址。如何向文件提供要搜索的IP地址列表,以及我们正在发布的IP地址列表。非常感谢您的光临Linux 如何在另一个文件中查找ip地址列表,linux,bash,Linux,Bash,我的任务是查看我们是否在公布ip地址列表(3000)。手动操作不是一个好主意,所以我复制了我们在一个文件中公布的所有ip地址。现在,我只需要创建一个bash脚本,并将ip地址列表输入到脚本中,这样它就可以在文件中找到ip地址以及正在播发的ip地址列表。如果找到,请将其保存在一个文件中(如果不在其他文件中)。这就是我目前所拥有的。这个脚本的问题是我必须手动输入每个ip地址。如何向文件提供要搜索的IP地址列表,以及我们正在发布的IP地址列表。非常感谢您的光临 #!/bin/bash while
#!/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
$script
这就是您所需要的。如果您对这两个文件进行排序,可以使用以下命令: 将显示未公布的IP地址,以及:
comm -12 all_ip_addresses_sorted advertised_ip_addresses_sorted
将显示公布的IP地址
还可以通过使用进程替换来避免创建单独的排序文件:
comm -23 <(sort all_ip_addresses) <(sort advertised_ip_addresses)
comm-23更好的脚本:
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
然后您会得到两个文件,一个是找到的ip,另一个是找不到的ip。
您需要的是shell I/O重定向 +1:优雅@巴尔马:工艺替代的好地方<是的,我已经用过很多次了。但我不认为有必要回答这个问题。这意味着,如果某个IP只是列表中某个IP的子字符串,则会找到该IP。另外,
对grep
有特殊意义,它是一个通配符,这可能会导致虚假匹配。您应该使用grep-F-x
来匹配整行,而不需要专门处理正则表达式字符。
while read ip
do
grep "$ip" "$ips" > /dev/null 2>&1 && echo "$ip" >> ip.found || echo "$ip" >> ip.notfound
done
ips=ips
cat iplist | sh searchip.sh
sh searchip.sh < iplist