grep correspondência invertida sobre string satisfazendo um padrão

0

Eu tenho strings por linha como:

" … “es” completed."
" … “en” completed."
" … “fr” completed."

Eu estou tentando inverter a correspondência de tudo isso. Isso evita a saída de todas as linhas que correspondem ao padrão.

echo " … “es” completed." | grep -v " … “(*)” completed."
echo " … “es” completed." | grep -v " … “[*]” completed."
echo " … “en” completed." | grep -v " … “[\w]” completed."
echo " … “fr” completed." | grep -v " … “[\W]” completed."

Todas essas formas grep ainda produzem as strings, não sei se preciso usar -e como parâmetro de opção, mas não estou obtendo o resultado desejado

    
por shakaran 14.09.2017 / 01:24

1 resposta

2

-e PATTERN, --regexp=PATTERN Use PATTERN as the pattern. This can be used to specify multiple search patterns, or to protect a pattern beginning with a hyphen (-). (-e is specified by POSIX .)

Sim, você deve usar -e. Mas também regex up, especialmente com aspas duplas entre aspas duplas, pontos e asteriks.

Digamos que eu não queira nenhuma linha que termine com concluída.

| grep -v -e '.*completed\.$'

  • $ fim da string ou linha
  • * zero ou mais ocorrências
  • corresponde quase tudo
  • \ caracteres de escape, neste caso.
por 14.09.2017 / 01:46