Для интеграционных тестов у меня есть вывод, который содержит полные пути к файлам. Я хочу, чтобы мой тестовый скрипт заменил пользовательское начало пути к файлу (например, /Users/uli/
) на общее слово (USER_DIR
), чтобы я мог сравнивать файлы.
Проблема, связанная сКонечно, есть косые черты на пути. Я попробовал решения, данные здесь и здесь , но они не работают для меня:
#!/bin/bash
old_path="/Users/uli/"
new_path="USERDIR"
sed -i "s#$old_path#$new_path#g" /Users/uli/Desktop/replacetarget.txt
Я получаю сообщение об ошибке
sed: 1: "/Users/uli/Desktop/repl ...": invalid command code u
Это версия sed
, которая поставляется с macOS 10.14.6 (она не имеет опции --version
и установлена в /usr/bin/
, так что понятия не имею, что именноверсия).
Обновление:
Я также пытался
#!/bin/bash
old_path="/Users/uli/"
old_path=${old_path//\//\\\/}
new_path="USERDIR"
regex="s/$old_path/$new_path/g"
echo $old_path
echo $regex
sed -i $regex /Users/uli/Desktop/replacetarget.txt
Но я получаю ту же ошибку. Что я делаю не так?