Você provavelmente quer
sed 's/exp1/exp2/g' foo.txt > foo2.txt
Leia mais em Tutorial de Sed , Outro tutorial e Um pequeno tutorial em Linux HOWTOs
Qual comando bash pode ser usado para a substituição de regex em um pipe?
cat foo.txt | someprogram
Você provavelmente quer
sed 's/exp1/exp2/g' foo.txt > foo2.txt
Leia mais em Tutorial de Sed , Outro tutorial e Um pequeno tutorial em Linux HOWTOs
Você também pode usar perl one liners se achar que deseja mais recursos de expressão regular do que o sed oferece. Veja este link para uma comparação. O exemplo de Nik seria parecido com:
perl -ple 's/exp1/exp2/g' foo > foo2.txt
O programa que você está procurando é sed.