我正在尝试提取未在 centos 上使用 BASH 更新的 IP 地址的参考编号,我有一个包含未更新地址 (IPs_withoutrefn.csv( 的 CSV,我在其中提取第二列,然后将该值与另一个 CSV(IP 引用.csv(进行比较以提取参考编号。
为此,我尝试以这种方式做一个变量,但输出总是空的,如果我在 shell 上尝试这个命令而不使用变量,它会正常工作。
REFNO=$(grep "$IP" ../IP-references.csv | awk 'BEGIN{FS=OFS=";"}{sub(/r$/,"");print $2"r"}')
我已经尝试在函数中转换这个 grep,并以我在这里阅读的不同方式更改 grep 中的"$IP",例如 ("^$IP;" 或 "$IP;" 或 ${IP} ... (,但结果总是相同的。
这是我正在使用的完整代码。
while IFS=";" read -r col1 col2
do
#IP to variable#
IP=$col2
echo "$IP"
#We search the IP and we extract the REFNO##
REFNO=$(grep "$IP" ../IP-references.csv | awk 'BEGIN{FS=OFS=";"}{sub(/r$/,"");print $2"r"}')
echo "$REFNO"
echo "$IP"
done < "../IPs_withoutrefn.csv"
我希望它足够清楚,以便理解,如果没有,请现在就让我。
IPs_withoutrefn.csv示例:
- ;1.1.1.1
- ;
- ;1.1.1.2
IP 参考.csv示例
客户端1;89345013745;模型号;地位;节点 1;第1节;节点 2;第2节;;1.1.1.1;1.1.1.1;;;日期;
客户端2;89345013746;模型号;地位;节点 1;第1节;节点 2;第2节;;1.1.1.2;1.1.1.2;;;日期;
客户3;89345013747;模型号;地位;节点 1;第1节;节点 2;第2节;;1.1.1.3;1.1.1.3;;;日期;
谢谢。
cut -d ";" -f 2 IPs_withoutrefn.csv | xargs -I {} grep {} IP-references.csv
这将打印 IP 引用中与第一个文件中的 IP 地址匹配的所有行。
您可以通过向格式列表添加| cut -d ";" -f 1,11
来进一步改进输出
cut -d ";" -f 2 IPs_withoutrefn.csv | xargs -I {} grep {} IP-references.csv | cut -d ";" -f 1,11
客户端1;1.1.1.1
客户端2;1.1.1.2
-d 表示分隔符,-f 表示归档数字