Если Вы просто хотите присоединиться к каждым 4 строкам в одну, можно сделать это с рекурсивным макросом:
ggqaqqa4Jj@aq@a
Объяснение:
gg
пойдите для запуска файлаqaq
очистите любой ранее хранивший макрос в регистре a
qa
начните записывать макрос в регистре a
4J
присоединитесь к 4 строкам в однуj
спуститесь по одной строке@a
имейте макрос в регистре a
назовите себяq
прекратите записывать@a
назовите макрос в регистре a
который будет продолжать работать над файлом, пока он не будет сделан.Альтернатива в Perl
perl -ni -e 'chomp;print $_, $.%4? " ":"\n"' your_file
Ссылка
Хорошо, я понимаю, что здесь происходит. Я видел ту же проблему при попытке настроить 3-узловой кластер Spring-XD в Vagrant на виртуальных машинах Linux.
Эта конфигурация работала:
server.1=172.28.128.3:2888:3888
server.2=172.28.128.4:2888:3888
server.3=172.28.128.7:2888:3888
Но эта не работала:
server.1=spring-xd-1:2888:3888
server.2=spring-xd-2:2888:3888
server.3=spring-xd-3:2888:3888
«Дымящимся пистолетом» была эта строка в моем журнале zookeeper:
2015-11-26 20: 48: 31,439 [myid: 1 ] - ИНФОРМАЦИЯ [Thread-2: QuorumCnxManager $ Listener @ 504] - Мой порт привязки выборов: spring-xd-1 / 127.0.0.1: 3888
Итак, почему была привязка Zookeeper порт выбора на интерфейсе обратной связи? Хорошо...
Мои / etc / hosts
на одной из виртуальных машин выглядели так:
127.0.0.1 spring-xd-1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
## vagrant-hostmanager-start
172.28.128.3 spring-xd-1
172.28.128.4 spring-xd-2
172.28.128.7 spring-xd-3
## vagrant-hostmanager-end
Я удалил имя хоста из строки 127.0.0.1
в / etc / hosts
и отказал службе zookeeper на всех 3 узлах, и БАМ! Все вышло розами. Итак, теперь файл хоста на каждой машине выглядит так:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
## vagrant-hostmanager-start
172.28.128.3 spring-xd-1
172.28.128.4 spring-xd-2
172.28.128.7 spring-xd-3
## vagrant-hostmanager-end
Я предполагаю, что вы не видели проблемы в Windows, потому что файл хостов ( C: \ Windows \ System32 \ drivers \ etc \ hosts
) по умолчанию не имеет записей. Вы сможете воспроизвести проблему в Windows, добавив к ней аналогичную строку 127.0.0.1
.
Я называю это ошибкой Zookeeper. Редактировать файл hosts было достаточно, чтобы доказать проблему и исправить ее в Vagrant, но я бы не рекомендовал его для любой «реальной» среды.
РЕДАКТИРОВАТЬ: Согласно http://ccl.cse.nd.edu/operations/condor/hostname.shtml , это, по-видимому, довольно распространенная проблема с кластерными приложениями в Linux, и рекомендует редактировать файл hosts, как я описал выше. Однако в документации Zookeeper по настройке кластера это не упоминается.
Вероятно, эта проблема вызвана установкой узла hostname
на 127.0.0.1
в /etc/hosts
. В этом случае ZK привяжет leader|election ports
к адресу 127.0.0.1
.
Параметр конфигурации quorumListenOnAllIPs=true
должен решить эту проблему и связать election|leader ports
с 0.0.0.0
.
Дополнительные параметры и их влияние можно найти в Руководстве по администрированию ZK
Всегда полезно проверить исходный код .