Чтобы заменить строки с 3 по 5 в файле1 строками с 3 по 5 из файла2:
ed -s file1 <<< $'3,5d\n2r !sed -n 3,5p file2\nwq'
Для большей гибкости :
start=3 end=5
printf '%d,%dd\n%dr !sed -n %d,%dp file2\nwq\n' $start $end $((start - 1)) $start $end | \
ed -s file1
Эти два метода достигают одной и той же цели: скриптовое редактирование файла1 с использованием строк из файла2.
Команды ed:
3,5d
-- удалить строки с 3 по 5 2r !sed...
-- взять вывод команды sed и добавить его после строки 2
sed -n 3,5p файл2
-- p
печатать только строки с 3 по 5 из файла2 wq
-- w
запишите файл обратно на диск и q
uit Вы не сказали, какую ОС вы используете, поэтому я предполагаю, что Linux. В этом случае обычно убийца OOM выполняет свою работу, пытаясь освободить некоторую память. Вы также можете ожидать сбоев ядра в таких ситуациях. Чтобы ответить на первый вопрос, нет, если у вас нет свопа, sysctl vm.swappiness
не будет иметь никакого эффекта.