我正在尝试在bash脚本中验证.csv文件中的域

时间:2017-03-12 19:37:16

标签: bash shell

这是我的工作而不是工作:

for i in `cat cnames.csv`

    do nslookup $i | grep -v "8.8.8.8\|=\|Non-authoritative" >> output.txt
done

有更好的解决方案吗?

3 个答案:

答案 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 ...