Скопируйте блок текста в определенную точку в другом файле

Я пытаюсь понять, как переместить блок текста из одного файла в конкретную точку в другой. У меня есть большое количество файлов, которые выглядят так:

H -9.92247800 1.33807800 -0.69208300 S -9.74392800 0.01073000 -0.55448800 C -7.98603700 0.04294200 -0.19355700 C -7.45325900 -1.23715800 0.02112600 ... 

И я хочу переместить столбцы чисел в файлы, которые выглядят так:

 ... 0 1 0 1 0 1 H 0 H S 0 H C 0 H C 0 H ... 

И так должно было после:

 ... 0 1 0 1 0 1 H 0 -9.92247800 1.33807800 -0.69208300 H S 0 -9.74392800 0.01073000 -0.55448800 H C 0 -7.98603700 0.04294200 -0.19355700 H C 0 -7.45325900 -1.23715800 0.02112600 H ... 

Есть ли способ автоматизировать это для большого количества файлов? Я знаю, что я могу выбрать блок, скопировать его и вставить его в другой файл вручную, но у меня слишком много файлов, чтобы это было осуществимо.

Если это помогает, числовые блоки всегда начинаются и заканчиваются в одном и том же месте (строка и столбец), а место, которое я хочу вставить, всегда находится в одной строке и столбце.

One Solution collect form web for “Скопируйте блок текста в определенную точку в другом файле”

Не знаю, готовы ли вы к Python, и, вероятно, есть удобный способ использования другого языка, но Python может сделать это с помощью чего-то вроде:

Код:

 # describe where the text block is located f1_start = 2, 18 f1_size = 4, 40 f2_start = 4, 19 # open all three files with open('file1', 'rU') as f1, open('file2', 'rU') as f2, open('file3', 'w') as f3: # skip some lines in file1 for _ in range(f1_start[0] - 1): f1.readline() # write first block of file2 to file3 for _ in range(f2_start[0] - 1): f3.write(f2.readline()) # read from and merge lines in file1 and file 2 for _ in range(f1_size[0]): l1 = f1.readline()[f1_start[1]:f1_start[1] + f1_size[1]].rstrip() l2 = f2.readline() l3 = l2[:f2_start[1]] + l1 + l2[f2_start[1]:] f3.write(l3) # write remaining lines from file2 to file3 while True: l2 = f2.read() if not l2: break f3.write(l2) 

Результат:

 ... 0 1 0 1 0 1 H 0 -9.92247800 1.33807800 -0.69208300 H S 0 -9.74392800 0.01073000 -0.55448800 H C 0 -7.98603700 0.04294200 -0.19355700 H C 0 -7.45325900 -1.23715800 0.02112600 H ... 
  • Bash, если на основе результата grep возникает ошибка «слишком много аргументов»?
  • Как добавить «открыть папку в качестве пользователя» в контекстном меню «Элементарный файловый менеджер ОС»?
  • "Rm -rf Filename.iso" Разрешение отклонено
  • Удаление файлов старше 500 дней
  • Поиск файлов, содержащих строку, и список их имен, отсортированных по дате изменения
  • , (точка) в режиме файла
  • В состоянии Bash if, как проверить, существуют ли какие-либо файлы, соответствующие простому шаблону?
  • объединение вывода из разных сценариев в разные файлы в цикле
  • Как создать файл, даже пользователь root не может его удалить
  • Как начать обработку файла со смещением?
  • Способы организации и доступа к часто посещаемым каталогам и файлам?
  • Используя цикл «for», запустите сценарий для всех файлов в каталоге
  • Linux и Unix - лучшая ОС в мире.