gpt4 book ai didi

bash - 如何跳过 .csv 文件中的重复条目

转载 作者:行者123 更新时间:2023-12-02 02:40:10 26 4
gpt4 key购买 nike

我是 bash 脚本的新手。我有一个包含子域 (URL) 列表的文本文件,我正在创建一个 .csv 文件 (subdomainIP.csv),它有 2 列:第一列包含子域 (Subdomain),第二列包含 IP 地址 (IP) .各列以“,”分隔。我的代码打算读取 URLs.txt 的每一行,找到它的 IP 地址并在 .csv 文件中输入选定的子域及其 IP 地址。

每当我找到域的 IP 地址并想将其作为新条目添加到 .csv 文件时,我想检查第 2 列的先前条目。如果有类似的IP地址,我不想添加新条目,但如果没有任何类似的情况,我想添加新条目。我通过将这些行添加到我的代码中来做到这一点:

awk '{ if ($IP ~ $ipValue) print "No add"
else echo "${line}, ${ipValue}" >> subdomainIP.csv}' subdomainIP.csv

但我收到此错误:
awk: cmd. line:2:       else echo "${line}, ${ipValue}" >> subdomainIP.csv}
awk: cmd. line:2: ^ syntax error

怎么了?

最佳答案

请您尝试以下操作:

declare -A seen                         # memorize the appearance of IPs
echo "Subdomain,IP" > subdomainIP.csv # let's overwrite, not appending
while IFS= read -r line; do
ipValue= # initialize the value
while IFS= read -r ip; do
if [[ $ip =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
ipValue+="${ip}-" # append the results with "-"
fi
done < <(dig +short "$line") # assuming the result has multi-line
ipValue=${ipValue%-} # remove trailing "-" if any
if [[ -n $ipValue ]] && (( seen[$ipValue]++ == 0 )); then
# if the IP is not empty and not in the previous list
echo "$line,$ipValue" >> subdomainIP.csv
fi
done < URLs.txt
  • 关联数组 seen可能是一个关键的目的。它被索引
    通过任意字符串(在这种情况下为ip地址)并且可以记住该值
    与字符串相关联。适合检查外观
    输入行上的 ip 地址。
  • 关于bash - 如何跳过 .csv 文件中的重复条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60030069/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com