Я хочу добавить "n" строк из файла (скажем, файл1 )в другой файл ниже "n" вхождений строки в другом файле по порядку

По умолчанию (AFAIK )драйвер соединения использует только мониторинг mii для проверки доступности интерфейса, т. е. присутствия оператора связи.

Однако вы можете захотеть использовать мониторинг ARP , в конечном итоге только для некоторых конкретных целей (, например, вашего основного маршрутизатора )для проверки входящих пакетов arp .

Этот процесс описан в документации по связыванию Linux.

По сути, вы можете контролировать цель (до 16 всего )таким образом:

echo +192.168.1.1 > /sys/class/net/bond0/bonding/arp_ip_target

Как правило, вам нужно установить правильное значение (не слишком длинное и не слишком короткое, чтобы проверить его в работе )для интервала мониторинга arp (в мс):

echo 100 > /sys/class/net/bond0/bonding/arp_interval

0
03.04.2017, 05:27
3 ответа

Это решение awk должно помочь:

awk 'NR==FNR{a[NR]=$0;next};1;tolower($1)=="animal"{print a[++i]}' file1 file2 > file3

NR == FNR {a [NR] = $ 0; next} накапливает данные file1 в массиве, переход к следующей строке ввода, чтобы предотвратить обработку file2 на этом этапе.

1 печатает каждую входную строку файла2.

tolower ($ 1) == "animal" {print a [++ i]} соответствует "animal" без учета регистра и выводит соответствующий элемент массива, предварительно увеличивая индекс массива.

1
28.01.2020, 02:19

Sed

Просто добавьте . после последней строки file_1 , чтобы сигнализировать о завершении файла_1 для sed , поскольку sed не имеет понятия FNR из awk , IOW, sed разновидность POSIX не имеет возможности узнать, когда заканчивается один файл и начинается следующий.

Основная идея состоит в том, чтобы сохранить имена животных в области хранения , а затем, когда придет время читать в file_2 , мы захватим каждую часть , разделенную новой строкой. ] удерживайте и прикрепите его к пространству шаблонов и в то же время отсоедините его от удержания . Это упражнение attach <-> detach выполняется только в строке, содержащей буквальную строку animal без учета регистра.

sed -e '
   1{
      :file1
         N
      /\n\.$/!bfile1
      s///;h;d
   }

   /^[aA][nN][iI][mM][aA][lL]/!b

   G
   s/\n/&&/2;ta
   b

  :a
   h;s/.*\n\n//;x
   s/\n\n.*//

' file_1 file_2
0
28.01.2020, 02:19

С GNU sed:

$ sed '/^animal/IR File1' File2
...
Animal Name
This Dog
...

AniMal Type
This Cat
...

AnIMal Class
This Duck
...

animal Brand
This Horse
...

, где расширения GNU следующие:

Модификатор I для сопоставления регулярных выражений - это расширение GNU, которое заставляет сопоставлять регулярное выражение без учета регистра.

и

R filename

Поставить в очередь строку с именем файла для чтения и вставки в выходной поток в конце текущего цикла или при чтении следующей входной строки. Обратите внимание, что если имя файла не может быть прочитано или если его конец достигнут, никакая строка не добавляется без какой-либо индикации ошибки.

3
28.01.2020, 02:19

Теги

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