Edite no lugar, mantendo apenas as linhas que correspondem ao padrão:
sed -n -r -i "/(pattern1|pattern2|pattern3|pattern4|pattern5)/p" ~/mpp/*.xml
No BSD sed
(Mac OSX), tente:
sed -n -E -i '' "/(pattern1|pattern2|pattern3|pattern4|pattern5)/p" ~/mpp/*.xml
Baseando o nome do arquivo em uma variável já existente
for fname in ~/mpp/*.xml
do
egrep "pattern1|pattern2|pattern3|pattern4|pattern5" "$fname" > "$fname.2"
done
O acima funciona porque um período não é legal em um nome de variável. Conseqüentemente, o shell sabe que, em $fname.2
, o nome da variável é apenas fname
. Se isso não for o caso, as chaves são necessárias. Por exemplo:
for fname in ~/mpp/*.xml
do
egrep "pattern1|pattern2|pattern3|pattern4|pattern5" "$fname" > "${fname}_2"
done
Aqui, as chaves tornam claro para o shell que o nome da variável é fname
, não fname_2
.