Se eu entendi corretamente, talvez algo como:
awk '{getline repl < "second-file"; sub(/regexp/, repl); print}' < first-file
Ou se regexp
aparecer várias vezes por linha ou não em todas as linhas:
perl -pe 's/regexp/chomp($r=<STDIN>);$r/ge' first-file < second-file