sed: -e выражение # 1, char 56: неизвестный параметр `s '[dублировать]

У этого вопроса уже есть ответ: sed search and replace с переменной, содержащей слэш 1 ответ

У меня есть несколько каталогов и подкаталогов, включая текстовые файлы. Мне нужно изменить конкретную строку этих текстовых файлов для всех каталогов и подкаталогов. Я использовал ниже команду sed для выполнения этой задачи:

find ./ -type f -exec sed -i -e 's/old_line/new_line/g' {} \;

Он работает, если в old_line и new_line нет места. Но это не работает для примера ниже:

old_line=5704550660 SPP91564_2 ANT # / TYPE new_line=5704550660 SPP91564_2 NONE ANT # / TYPE

, когда я добавляю эти строки внутри команды sed, я получаю;

sed: -e expression #1, char 56: unknown option to `s'

Как я могу изменить команду выше для правильной работы над примером?

1
задан 22 August 2017 в 23:13

3 ответа

Это не те места, которые вызывают проблему, но / в тексте. Ваша команда читает: sed 's/570455066 .../ TYPE/5704550660.../ TYPE/g' - вы видите проблему? Вы должны использовать другой символ в качестве разделителя, который не отображается в заменяющем тексте, например :

sed 's:5704550660          SPP91564_2                              ANT # / TYPE:5704550660          SPP91564_2      NONE                    ANT # / TYPE:g'

Вы также можете просто выйти из / в тексте с помощью обратной косой черты: \/.

4
ответ дан 22 May 2018 в 19:22

Это не те места, которые вызывают проблему, но / в тексте. Ваша команда читает: sed 's/570455066 .../ TYPE/5704550660.../ TYPE/g' - вы видите проблему? Вы должны использовать другой символ в качестве разделителя, который не отображается в заменяющем тексте, например :

sed 's:5704550660 SPP91564_2 ANT # / TYPE:5704550660 SPP91564_2 NONE ANT # / TYPE:g'

Вы также можете просто выйти из / в тексте с помощью обратной косой черты: \/.

4
ответ дан 18 July 2018 в 08:24

Это не те места, которые вызывают проблему, но / в тексте. Ваша команда читает: sed 's/570455066 .../ TYPE/5704550660.../ TYPE/g' - вы видите проблему? Вы должны использовать другой символ в качестве разделителя, который не отображается в заменяющем тексте, например :

sed 's:5704550660 SPP91564_2 ANT # / TYPE:5704550660 SPP91564_2 NONE ANT # / TYPE:g'

Вы также можете просто выйти из / в тексте с помощью обратной косой черты: \/.

4
ответ дан 24 July 2018 в 19:05

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

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