Em vez de usar o bash para fazer a tarefa, você pode aprender sed
:
sed -e 's/^FCOMPL=g77$/FCOMPL=gfortran/' \
-e '/^FFLAGC=-Wall -O$/s/$/ -fno-backslash/' makefile.orig > makefile
Cada -e
dá sed
um comando para executar. Nesse caso (1st -e), o comando s
executa uma substituição : s/foo/bar/
substitui a primeira ocorrência de foo
em cada linha por bar
. Para ter certeza de que trabalhamos na linha completa, adicionei ^
(início da linha) e $
(fim da linha).
Você pode prefixar um comando por um seletor. Nesse caso (2ee), o comando s
é aplicado apenas a uma linha correspondente a ^FFLAGC=-Wall -O$
.
Você pode até usar o sinalizador -i
para substituir o arquivo:
sed -i -e 's/^FCOMPL=g77$/FCOMPL=gfortran/' \
-e '/^FFLAGC=-Wall -O$/s/$/ -fno-backslash/' makefile