以下是我所拥有的,但不起作用:
for i in `cat cnames.csv`
do nslookup $i | grep -v "8.8.8.8\|=\|Non-authoritative" >> output.txt
done有更好的解决方案吗?
发布于 2017-03-13 03:53:33
这是Bash FAQ 001;您不需要使用for循环遍历文件。
while IFS= read -r i; do
nslookup "$i"
done < cnames.csv | grep -v "8.8.8.8\|=\|Non-authoritative" > output.txt请注意,您不需要为每个对nslookup的调用单独运行grep;您可以将聚合输出通过管道传递给单个调用。
发布于 2017-03-13 03:48:05
您可以使用nslookup的退出状态。
for i in $(cat cnames.csv); do
if nslookup "$i"; then
echo "$i is valid"
else
echo "$i not found"
fi
donecnames.csv是真正的.csv文件吗?这不是只需要提取其中包含地址的列吗?现在,逗号和其他字段(如果存在)也会被读取。
发布于 2017-03-13 05:29:02
您可能可以使用GNU Parallel以并行方式更快、更简洁地查找它们
parallel -a cnames.csv nslookup {} | grep ...https://stackoverflow.com/questions/42752141
复制相似问题