Как то так?
#!/bin/bash
sed -e "s/$2/$3/g" <$1 >$1.$$ && cp $1.$$ $1 && rm $1.$$
В качестве альтернативы, вы можете использовать одну команду
sed -i -e "s/$2/$3/g" $1
как предположил Ян. Я обычно использую первую форму самостоятельно. Я видел системы, где -i
не поддерживается (SunOS).
Это заменит все экземпляры второго аргумента третьим в файле, переданном как первый. Например, ./replace file oldword newword