我正在尝试提取没有使用BASH在centos上更新的IP地址的参考号,我有一个没有更新地址的CSV(IPs_withoutrefn.csv),我提取第二列,然后我们将这个值与另一个CSV进行比较( IP-references.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-references.csv示例
Client1; 89345013745; model; status; node1; sect1; node2; sect2 ;; 1.1.1.1; 1.1.1.1 ;;; datexpiration;
Client2; 89345013746; model; status; node1; sect1; node2; sect2 ;; 1.1.1.2; 1.1.1.2 ;;; datexpiration;
Client3; 89345013747; model; status; node1; sect1; node2; sect2 ;; 1.1.1.3; 1.1.1.3 ;;; datexpiration;
谢谢。
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
Client1; 1.1.1.1
CUSTOMER2; 1.1.1.2
-d用于分隔符,-f用于提交的数字