Переменная внутри командной переменной на bash - PullRequest
0 голосов
/ 30 августа 2018

Я пытаюсь извлечь ссылочные номера для 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; статус; node1; sect1; node2; sect2 ;; 1.1.1.1, 1.1.1.1 ;;; datexpiration;

Client2; 89345013746; ModelNo; статус; node1; sect1; node2; sect2 ;; 1.1.1.2, 1.1.1.2 ;;; datexpiration;

Client3; 89345013747; ModelNo; статус; node1; sect1; node2; sect2 ;; 1.1.1.3, 1.1.1.3 ;;; datexpiration;

Спасибо.

1 Ответ

0 голосов
/ 30 августа 2018

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

Client2; 1.1.1.2

-d для разделителя, -f для числовых значений

...