Я использую sed в Unix, чтобы заменить некоторый текст специальными символами в файле. Я гуглю это и нахожу следующую команду

sed 's/from/to/g' file.txt

здесь 'from' - исходный текст, подлежащий замене, 'to' - текст замены

Я пытаюсь применить это к файлу с длинным текстом со специальными символами, то есть заменив "/D/dec/prog/g++.exe -Wall --std = c++0x" (без кавычек) на "SYSTEM_PATH/BIN" , Я пытаюсь следующее, но это не работает

sed 's//D/dec/prog/g++.exe   -Wall --std=c++0x/SYSTEM_PATH/BIN/g' file.txt

но это приводит к ошибке "sed: -e выражение # 1, char 10: неизвестная опция для` s '".

Я новичок в Unix, но по какой-то причине мне нужно удаленно войти на сервер Unix для обработки какого-либо файла. я хочу знать

1) как я могу определить переменную from и to для переменной, что-то вроде FROMSTR = '/D/dec/prog/g++.exe -Wall --std = c++0x' TOSTR = 'SYSTEM_PATH/BIN'

поэтому я могу вызвать sed как sed 's/$ FROMSTR/$ TO/g' file.txt

но, кажется, СЭД не знаю, как интерпретировать это как переменную

2) после замены текста на sed он не записывает результат обратно в исходный файл. Как заставить это работать?

1 ответ1

0

Команда замены не должна использовать / в качестве разделителя.

sed 's!/D/dec/prog/g++.exe   -Wall --std=c++0x!SYSTEM_PATH/BIN!g' file.txt

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .