Переменная внутри командной переменной на bash

Я пытаюсь извлечь ссылочные номера для IP-адресов, которые не обновляются с помощью BASH на centos, у меня есть CSV с не обновленными адресами (IPs_withoutrefn.csv), где я извлекаю второй столбец, а затем мы сравниваем это значение с другим CSV (IP-reference.csv) для извлечения ссылочного номера.

Для этого я пытался сделать переменную таким образом, но вывод всегда пуст, если я попробую эту команду на оболочке без использования переменной, она работает правильно.

REFNO=$(grep "$IP" ../IP-references.csv | awk 'BEGIN{FS=OFS=";"}{sub(/\r$/,"");print $2"\r"}')

Я уже пытался преобразовать этот grep в функцию и изменить "$IP" внутри 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-reference.csv

Client1;89345013745; ModelNo; статус; узел1; sect1; узел2; sect2;; 1.1.1.1; 1.1.1.1;;; datexpiration;

Client2; 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;

Спасибо.

1 ответ

Решение

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 - номера полей

Другие вопросы по тегам