Да, ты прекрасно можешь!-
Вы можете определить переменную из оболочки и экранировать имя переменной внутри скрипта, что-то вроде этого
s/'$replace'/bar/
затем вызовите скрипт как:
replace="foo" && sed -f script.sed
И если вы хотите передать файл в качестве аргумента хитрость здесь в том, чтобы скрипт заканчивался без аргумента, подобного этому
/foo/{
s/foo/bar/
}
Затем из оболочки просто вызовите его с помощью xargs
или find
и позвольте им заменить аргумент для вас:
find./shelves -type f \( -name "*.json" -o -name "*.csv" \) -print -exec sed -f main.sed {} \;
Это работает!