Вы можете попробовать:
sed -i '/old text/ s//new text/g' gigantic_file.sql
Отсюда ссылка:
ОПТИМИЗАЦИЯ ДЛЯ СКОРОСТИ: Если необходимо увеличить скорость выполнения (из-за больших входных файлов или медленных процессоров или жестких дисков), подстановка будет выполняться быстрее, если "find будет выполняться быстрее, если выражение "find" будет указано до того, как инструкцией "s/.../.../".
Вот сравнение для файла размером 10 Гб. До:
$ time sed -i 's/original/ketan/g' wiki10gb
real 5m14.823s
user 1m42.732s
sys 1m51.123s
После:
$ time sed -i '/ketan/ s//original/g' wiki10gb
real 4m33.141s
user 1m20.940s
sys 1m44.451s
В скрипте $#
расширяется до количества позиционных параметров. Мы можем использовать это, чтобы проверить, было ли передано правильное количество опций, и сразу выйти, если нет:
#!/bin/sh
if [ "$#" -ne 1 ]; then
printf 'ERROR! You must provide one and only one argument!\n' >&2
exit 1
fi
Где можно об этом прочитать: