Aqui está como eu faria:
sed -E '/(nas_mba|nas_tvr)/! s/nas_.../nas_bar/'
Exemplo:
echo "nas_mba
nas_tvr
nas_foo" | sed -E '/(nas_mba|nas_tvr)/! s/nas_.../nas_bar/'
nas_mba
nas_tvr
nas_bar
Apenas nas_foo
no texto original é substituído, enquanto nas_mba
e nas_tvr
não são alterados.
Outro exemplo com mais linhas:
echo "nas_hat
> nas_mba
> nas_foo
> nas_hat
> nat_tvr
> nas_cat
> nas_dog" | sed -E '/(nas_mba|nas_tvr)/! s/nas_.../nas_bar/'
nas_bar
nas_mba
nas_bar
nas_bar
nat_tvr
nas_bar
nas_bar
Se você quer mudar de lugar, basta adicionar a opção -i
(se você usa o GNU sed
você não precisa de -i ""
, basta -i
seria suficiente):
sed -E -i "" '/(nas_mba|nas_tvr)/! s/nas_.../nas_bar/' nas.txt
cat nas.txt
nas_bar
nas_mba
nas_bar
nas_bar
nat_tvr
nas_bar
nas_bar
Testado no Mac OS X 10.11.6 e no BSD sed
.