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

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

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 ... 

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

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

  • Что означает «липкий бит» в NFS?
  • Добавление другого суффикса в конец строки
  • Показать содержимое многих файлов
  • Почему этот исполняемый файл все еще выполняется после того, как я удалил его?
  • Как дать право писать / создавать права на еще не существующие файлы без доступа на запись родительского каталога?
  • Невозможно создать файл * .o на разделе
  • Как удалить пустой каталог (файловая система btrfs)?
  • Какой последний символ в файле?
  • 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 ... 
    Linux и Unix - лучшая ОС в мире.