Как я заменяю строку знаком доллара в sed?

xkeycaps кажется, делает то, что Вы хотите, если я понимаю Вас правильно.

2
09.02.2015, 19:21
3 ответа

Попробуйте это (Крис, ты очень близко):

sed -i '' 's|export TODO_FILE="$TODO_DIR/todo.txt"|export TODO_FILE="$TODO_DIR/writing.txt"|g' ~/.todo/config
2
27.01.2020, 22:00

Лучше сначала сопоставим строку, а затем просто замените часть

sed -i '/export TODO_FILE/ s/todo.txt/writing.txt/' ~/.todo/config

, это становится коротким, когда у вас слишком длинная переменная пути.

И как упомянуто в предыдущем ответе, используйте какой-то другой сепаратор при работе с пути.

1
27.01.2020, 22:00

Я не думаю, что проблема в долларовом знаке, потому что он внутренних кавычек. Предполагая, что вы используете Bash, Строки внутри одной цитаты не являются переменными расширенными .

Одной из ваших проблем является то, что вы выбрали символ сепаратора (первый символ после команды «S»), который существует в ваших строках находки / замены - «/». Это интерпретируется САД по-разному, чем то, что вы ожидаете. Вы должны выбрать другой символ, который не отображается в ваших строках находки / замены, таких как «|».

sed -i 's|export TODO_FILE="$TODO_DIR/todo.txt"|export TODO_FILE="$TODO_DIR/writing.txt"|g' ~/.todo/config

Однако это не объясняет ваше конкретное сообщение об ошибке.

Может быть, вы используете версию BSD, которая , очевидно, относится к -i по-разному ?

1
27.01.2020, 22:00

Теги

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