Использование sed и perl для обработки текста, копирования строк из одного файла в другой

Я новичок в Linux и имею сложную задачу.

У меня есть 3 файла данных, и мне нужно сделать следующее:

  1. Перейти к строке 31 файла 1, удалить его
  2. Прочитать 1 строку из файла 2 и добавить вместо удаленной строки
  3. Перейдите к строке 97 файла 1, удалите ее, а затем прочитайте строку 1 из файла 2 и добавьте вместо этой удаленной строки в файл 1.

Также важно сохранить один и тот же файл, т.е. файл, он не подлежит изменению.

Я пробовал разные версии sed а также perl, с приемами копирования в буфер, но не удалось.

Я открыт для всех предложений и прошу экспертов дать мне предложения.

1 ответ

Решение

Я не могу найти ссылку на 3-й файл в вашем вопросе, но если вы имеете в виду заменить строку номер 31 файла 1 на 1-ю строку файла 2, и заменить строку номер 97 файла 1 на 2-ю строку файла 2:

sed -i -e '30R f2
31d;96R f2
97d' f1

Новые строки важны после f2, поэтому sed знает, что это конец имени файла.

Обратите внимание, что R Команда является расширением GNU, она не является стандартной.

Другие вопросы по тегам