Взять информацию из файла .csv и добавить ее после определенного шаблона

Ваш Docker запускает DHCP клиент на интерфейсе br0, что заставляет его пытаться получить IP адрес для интерфейса. На это указывает IP-адрес 169.254.x.x, который является IP-адресом автоконфигурации, используемым DHCP.

Вам необходимо проверить свои конфигурационные файлы, чтобы DHCP был отключен.

2
09.07.2017, 17:54
1 ответ
perl -F',\s+' -lane '
   @ARGV and $h{$F[1]}=$F[0],next;

   /^name:\s+(\S+)/ && exists $h{$a=$1} .. /^$/ || eof and do{
      /^$/ || eof and $_ .= (/^$/ ? $, : $\) . ("id: " . $h{$a} // "") . (eof ? $, : $\);
   };

   print;
' table.csv students.dat

Объяснение

Perl параметры

  • -F Разделитель полей установлен на , \ s +
  • -l Разделитель выходной записи установлен на \ n
  • -a Режим автоматического разделения => массив @F содержит поля $ 1, $ 2, ..., $ NF
  • -n Печатать только при запросе + неявное чтение строк, a.la., awk

Логика

  • Порядок аргументов такой. csv файл, затем файл .dat.
  • @ARGV и => когда входным файлом является .csv, otw .dat
  • Из данных файла .csv заполните хэш% h ключами в качестве имени и значением в качестве идентификатора.
  • Теперь, когда мы подошли к обработке файла .dat, там будет действие
  • В Perl , condition1 .. condition2 является оператором триггера, a. la., , из sed . Но он более универсален в том смысле, что мы можем добавить больше условий к входам .. . В частности, в нашем случае / ^ name: \ s + (\ S +) / && $ h {$ a = $ 1} составляет составной cond1 , который, когда строка начинается с имя: за которым следует несколько пробелов, затем фиксируется имя учащегося, и $ h {$ a = $ 1} проверяет, найдено ли это имя учащегося с ИСТИННЫМ значением. (N.B .: so => ​​если бы ID был равен нулю, это отключило бы!). Оператор триггер остается истинным после того, как этот шаг был выполнен, и мы продолжаем его до тех пор, пока не увидим пустую строку или не достигнем EOF . На этом конкретном шаге мы заполняем текущую строку $ _ данными id из хэша.
2
27.01.2020, 22:10

Теги

Похожие вопросы