bash上的命令变量内的变量



我正在尝试提取未在 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 表示归档数字

最新更新