Попытка выполнить команду sed

Я пытаюсь работать, следующие sed управляют, чтобы я, очевидно, скопировал вставляемый с Интернета:

sed -i '' -E "s/create_table\ [:\"']([a-zA-Z0-9_]+)[\"']?/create_table\ :\1, options: 'ENGINE=InnoDB ROW_FORMAT=DYNAMIC'/g" ./*.rb

Однако это дает мне:

sed: can't read s/create_table\ [:"']([a-zA-Z0-9_]+)["']?/create_table\ :\1, options: 'ENGINE=InnoDB ROW_FORMAT=DYNAMIC'/g: No such file or directory

Я не могу понять это.. я мог получить некоторую справку?

1
задан 30 March 2017 в 16:18

1 ответ

В GNU sed это не требуется, чтобы обеспечивать пустой суффикс при использовании -i опция отредактировать файл, оперативный без резервного копирования. Однако, если Вы делаете, это должно сразу следовать -i без прошедшего пробела: иначе, эти '' интерпретируется как выражение sed , которое в свою очередь заставляет Ваше фактическое выражение s/pattern/replacement интерпретироваться как имя файла.

, Таким образом, опции:

sed -i <other options> <expression> <files>

или

sed -i'' <other options> <expression> <files>
4
ответ дан 3 December 2019 в 06:54

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

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