edição original
Uma expressão regular não pode ser especificada com a opção -F
referente a grep
. Há outro problema em relação à expressão regular. Se o caractere ^
for usado como uma âncora para corresponder ao início de uma linha, ele deverá ser o primeiro caractere da expressão regular.
prompt% cp -v input input.back
prompt% grep -e "$regex" input.back > output
prompt% grep -v "$regex" input.back > input
Expressão regular: o autor original não forneceu uma contribuição concreta, portanto, é difícil encontrar uma expressão regular adequada.
Editar: finalmente, o autor original forneceu um arquivo de entrada de amostra.
Apple/One-plus/Samsung/Mi/Sony/_Nokia/
Apple/One-plus/Samsung/Mi/Lenovo/_Nokia/
Apple/One-plus/Samsung/Mi/HTC/OPPO/
Expressão regular: regex
regex='\([-[:alpha:]]\+\/\)\{5\}_Nokia\/'
Soluções alternativas
Estas soluções similares não são recomendadas para iniciantes que nunca leram o manual do sed.
sed -n "/$regex/p;/$regex/d;w input" input.back > output
Grosso modo, as linhas que correspondem à expressão regular são salvas no arquivo output
, então, elas são excluídas do buffer de recepção correspondente e o conteúdo do buffer é gravado no arquivo input
.
sed -i.back -e "/$regex/w output" -e "/$regex/d" input
Esses comandos têm diferenças sutis, mas o segundo é mais conveniente.