[英]Variable inside a command variable on bash
我正在尝试为未在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})来更改grep内部的“ $ 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示例
客户端1; 89345013745; modelno;状态;节点1; SECT1;节点2; sect2的;; 1.1.1.1; 1.1.1.1 ;;; datexpiration;
客户机2; 89345013746; modelno;状态;节点1; SECT1;节点2; sect2的;; 1.1.1.2; 1.1.1.2 ;;; datexpiration;
Client3; 89345013747; modelno;状态;节点1; SECT1;节点2; 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 1,11
| cut -d ";" -f 1,11
| 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用于域号
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.