Сравните поля в 2 файлах и напишите только пропущенные или разные поля - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть 2 вывода LDIF, подготовленные в одну строку каждый объект, разделенный "|"и все поля атрибутов отсортированы.Я хочу написать первое поле, содержащее dn: когда поле отсутствует или имеет другое значение во втором файле.Если он отсутствует, мне нужно добавить маркер и заменить маркер, если он другой.Если все поля идентичны, ничего не должно быть написано.Мой сценарий с 2 ​​циклами работает, но он замедляется для миллионов строк.Я пытаюсь сделать это сейчас с помощью awk, но я не знаю, как сравнить с ним 2 файла.

Файл 1

dn:abc|attribut a: 10|attribut b: 11|attribut c: 12
dn:xyz|attribut a: 10|attribut b: 11|attribut c: 12

Файл2

dn:abc|attribut a: 10|attribut b: 11|attribut c: 12
dn:xyz|attribut a: 10|attribut c: 11

Необходимый вывод

dn:xyz|add attribute b: 11|replace attribute c: 12

Строка с dn: abc идентична в обоих файлах, поэтому она не записывается в выходной файл.Строка dn: xyz имеет различие, поэтому мне нужно, чтобы это первое поле содержало «dn: xyz».Следующее поле атрибутирует a: 10 идентично, поэтому ничего не делать.Следующее поле отсутствует в файле 2, мне нужно «добавить атрибут b: 11».Последнее поле attribut c: находится в обоих файлах, но значение отличается в файле 2, мне нужно «заменить attribut c: 12» значение из файла 1.

1 Ответ

0 голосов
/ 11 февраля 2019

Это не прямой ответ на вопрос, однако из комментариев кажется, что сравниваемые файлы создаются из стандартных файлов в формате LDIF.

Уже существуют инструменты для получения двух файлов LDIF.и выведите изменения, необходимые для их согласования.Например:

  • OpenDJ предоставляет ldifdiff в своем пакете opendj-ldap-toolkit
  • ldifdiff - инструмент Go
  • ldiff - это не поддерживаемый скрипт Perl для «генерации различий между двумя файлами LDIF»
  • ldap-diff - другой скрипт Perl

Один из этих инструментов, вероятно, будет гораздо более надежным, чем что-то новое с нуля.

Некоторое фоновое чтение на LDIF, включая записи изменений:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...