这是我的工作而不是工作:
for i in `cat cnames.csv`
do nslookup $i | grep -v "8.8.8.8\|=\|Non-authoritative" >> output.txt
done
有更好的解决方案吗?
答案 0 :(得分:1)
这是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
请注意,每次拨打grep
时,您都无需单独运行nslookup
;您可以将聚合输出传递给单个调用。
答案 1 :(得分:0)
您可以使用nslookup
的退出状态。
for i in $(cat cnames.csv); do
if nslookup "$i"; then
echo "$i is valid"
else
echo "$i not found"
fi
done
cnames.csv
是真正的 .csv文件吗?不需要仅提取包含地址的列吗?现在也读取逗号和其他字段(如果存在)。
答案 2 :(得分:0)
使用 GNU Parallel
,你可能会更快地并行查找并更简洁parallel -a cnames.csv nslookup {} | grep ...