2014-01-02 11 views
0

Я не нашел решение для следующей глупой задачи.Задача sed не работает на macbook pro

У меня есть файл, полный путь Я обозначаю с

file_name 

и две строки, которые хранятся в переменных var1 и var2.

Я знаю, что строка в var2 находится внутри файла file_name. Я хочу найти и заменить все вхождения var2 в file_name со строкой в ​​var1.

Эти строки содержат названия путей. Это означает, что у меня есть символ / внутри.

Кроме того, моя машина является macbook pro.

Объединяя много предложений найдено в Интернете я, наконец, попробовал в терминале

sed -i "" -e "s:$var2:$var1:g" file_name 

Результат: имя_файла не меняется. Любое предложение?

Есть ли решение с awk?

+0

У любого из var2 или var1 есть ':' в них? Имеет ли var2 какие-либо метасимволы регулярного выражения? –

+0

у них нет:, вот почему я выбираю:. Но они содержат пробелы. Это может быть проблема? – user65187

+0

№ Пространства не должны быть проблемой. Но любые '' '', '+', '^', '$', '.' и т. Д. Могут вызвать проблемы в' var2'. –

ответ

0

Macs использует BSD sed, а не GNU sed. BSD sed не имеет опции -i или --in-place. Вам придется записать во временный файл, а затем переместить новый файл на место после его написания.

Смежные вопросы