Вводя в скрипт и убедившись, что есть только один параметр

Вы можете попробовать:

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

1
16.03.2019, 21:33
1 ответ

В скрипте $#расширяется до количества позиционных параметров. Мы можем использовать это, чтобы проверить, было ли передано правильное количество опций, и сразу выйти, если нет:

#!/bin/sh

if [ "$#" -ne 1 ]; then
    printf 'ERROR! You must provide one and only one argument!\n' >&2
    exit 1
fi

Где можно об этом прочитать:

2.5.1 Параметры позиционирования

Условная конструкция if

2.7.2 Перенаправление вывода

3
27.01.2020, 23:30

Теги

Похожие вопросы