我正在尝试为未在centos上使用BASH更新的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转换为函数,并以我在此处阅读的不同方式(例如“ ^ $ 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;模型编号;状态; node1; sect1; node2; sect2 ;; 1.1.1.1; 1.1.1.1 ;;; datexpiration;
Client2; 89345013746;型号;状态; node1; sect1; node2; sect2 ;; 1.1.1.2; 1.1.1.2 ;;; datexpiration;
Client3; 89345013747;型号;状态; node1; sect1; node2; sect2 ;; 1.1.1.3; 1.1.1.3 ;;; datexpiration;
谢谢。
答案 0 :(得分:0)
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
Client2; 1.1.1.2
-d表示分隔符,-f表示归档编号