Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Синхронизация txt файла с трех точек  (Прочитано 1917 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Ввысь

  • Автор темы
  • Активист
  • *
  • Сообщений: 473
    • Просмотр профиля
Синхронизация txt файла с трех точек
« : 14 Декабря 2021, 20:27:54 »
Здравствуйте.

Есть три компьютера, на каждом свой txt файл, хочу синхронизировать содержимое всех трех.
Как это можно сделать? Почитал про rsync, но не нашел как можно синхронизировать именно содержимое файлов.
Спасибо.

Т.е. сейчас
1.txt
qwe
2.txt
asd
3.txt
zxc

хочу
1.txt
qwe
asd
zxc

2.txt
qwe
asd
zxc

3.txt
qwe
asd
zxc

Оффлайн qpdb

  • Забанен
  • Активист
  • *
  • Сообщений: 628
  • xUbuntu 22.04
    • Просмотр профиля
Re: Синхронизация txt файла с трех точек
« Ответ #1 : 14 Декабря 2021, 22:06:19 »
Приветствую, Ввысь!

Не очень понятно что Вы имеете в виду под синхронизацией…

Объединить все три файла в один  и удалить дубликаты?

Удалить дубликаты без объединения файлов, но чтобы в каждом файле остались только уникальные строки?

В общем чуть уточните этот момент пж. …

2021 Dec 14; 02:06 PM

Оффлайн Ввысь

  • Автор темы
  • Активист
  • *
  • Сообщений: 473
    • Просмотр профиля
Re: Синхронизация txt файла с трех точек
« Ответ #2 : 14 Декабря 2021, 22:30:46 »
qpdb, чтобы все три файла были одинаковые и каждый содержал все строки из трех файлов.


Оффлайн qpdb

  • Забанен
  • Активист
  • *
  • Сообщений: 628
  • xUbuntu 22.04
    • Просмотр профиля
Re: Синхронизация txt файла с трех точек
« Ответ #3 : 15 Декабря 2021, 03:08:20 »
Продолжаю, я понял так и буду описывать как бы я выполнял эту задачу.

1.)В конец каждой строки каждого файла добавляем что-то редкое ❰∑∑❱, что точно не встретится, можно добавить слово, но так проще…

sed -i "s:$:∑∑:g" 001.txt;sed -i "s:$:∑∑:g" 002.txt;sed -i "s:$:∑∑:g" 003.txt

2.)Применяем команду paste и создаём общий файл, думаю что paste будет лучше cat потому что строки в дальнейшем окажутся в порядке 1.1,2.1,3.1❚1.2,2.2,3.2❚1.3,2.3,3.3

paste 001.txt 002.txt 003.txt > 004.txt

3.)Преобразуем полученный файл 004.txt
sed -i "s:∑∑:\n:g;s:\t: :g;s:∑∑: :g;s:^[ ]*::g;/^[ \t]*$/d ;s:^[ |\t]*::;s:[ |\t]*$::" 004.txt
Тут уже не будет пустых строк, пробелов в начале строк строки с пробелами и табуляцией тоже будут удалены. В этом файле будут все данные из трёх файлов.

4.)Чтобы удалить дубликаты не меняя порядка строк (т.е без сортировки) можно применить:

awk -i inplace '!($0 in a) {a[$0];print}' 004.txt
Я не рассматривал простейший случай объединить три файла командой cat отсортировать и удалить дубликаты и получить итоговый файл.

2021 Dec 14; 07:08 PM


Оффлайн Domitory

  • Активист
  • *
  • Сообщений: 741
    • Просмотр профиля
Re: Синхронизация txt файла с трех точек
« Ответ #4 : 15 Декабря 2021, 13:22:41 »
Добрый день!

Не очень ясно зачем вам это надо.

Если эти файлы редактируемы в ручную разными людьми то синхронизировать их какая то ерунда по моему. Ну да ладно.
Попробую вставить свои пять копеек.

Я бы сделал так:
1) На одном из компьютеров или на общем сетевом ресурсе, с помощью команды CAT, создать новый файл состоящий из этих трех файлов.
2) С помощью обычного копирования или даже с помощью RSYNC скопировать этот новый файл обратно на каждый компьютер заменив им старый файл.

Например с помощью команды:
cat 1.txt 2.txt 3.txt | perl -pe 's/^\s+//' | sort | uniq > new.txt
Будет создан новый файл new.txt состоящий из строчек файлов 1.txt, 2.txt, 3.txt , все пробелы в начале строк и все повторения будут удалены. Строки будут отсортированы так что смысл текста может при этом потеряться.

Если пробелы в начале строк важны для различия строк то тогда команда:
cat 1.txt 2.txt 3.txt | sort | uniq > new.txt

Это самое простое что сейчас в голову пришло.

Может стоит рассмотреть вариант что сам файл находится на общем сетевом ресурсе а на станциях используются ссылки на него? Но тогда будет обеспечен конфликт одновременного доступа к одному файлу.


Для чего это надо? Может кто то что то и предложит подходящее под конкретную ситуацию.
 






« Последнее редактирование: 15 Декабря 2021, 13:25:08 от Domitory »

Оффлайн Ввысь

  • Автор темы
  • Активист
  • *
  • Сообщений: 473
    • Просмотр профиля
Re: Синхронизация txt файла с трех точек
« Ответ #5 : 15 Декабря 2021, 15:24:20 »
qpdb, я так понял это одноразовое решение?
Domitory, с промежуточным ресурсом это да, хотел обойтись без него.

Это просто три файла куда пишутся данные. Думал все объединить чтоб не смотреть в трех источниках.

Оффлайн qpdb

  • Забанен
  • Активист
  • *
  • Сообщений: 628
  • xUbuntu 22.04
    • Просмотр профиля
Re: Синхронизация txt файла с трех точек
« Ответ #6 : 15 Декабря 2021, 16:06:49 »
Приветствую!

qpdb, я так понял это одноразовое решение?

В том виде, который я представил, естественно да! Так сказать «концепт»😇…

Я в основном исходил из того, чтобы не анализировать смешанные отсортированные данные из трёх файлов, а смотреть данные в последовательности их записи в файлы.

А так, чтобы всё было «красиво😇» придётся Вам „изваять” скрипт наверное какой-то, который будет собирать и преобразовывать данные они ведь на разных машинах…

2021 Dec 15; 08:06 AM

Оффлайн Ввысь

  • Автор темы
  • Активист
  • *
  • Сообщений: 473
    • Просмотр профиля
Re: Синхронизация txt файла с трех точек
« Ответ #7 : 16 Декабря 2021, 16:49:58 »
qpdb, спасибо, но сделаю с промежуточным ресурсом, много что-то возни выходит.

 

Страница сгенерирована за 0.034 секунд. Запросов: 25.