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

На этот вопрос уже есть ответ здесь:

У меня есть несколько каталогов и подкаталогов, содержащих текст файлы. Мне нужно изменить определенную строку этих текстовых файлов для всех каталогов и подкаталогов. Я использовал приведенную ниже команду 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

1 ответ

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

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

, можно также просто выйти / в тексте с обратной косой чертой: \/.

4
ответ дан 3 December 2019 в 06:53

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

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