Quando você emite egrep "\" string_demo | wc -l , seu shell está tratando \ como barra invertida e continuando a receber entrada no PS2 até você digitar EOF ( Ctrl + D ).
Nesses casos, você precisa usar aspas simples para escapar da interpretação do shell. Mais precisamente, se você quiser procurar barras invertidas literais em um arquivo, use:
grep '\' file.txt
Exemplo:
$ grep '\' file.txt
eagle,dove\ ,cat
Aqui eu fiz duas alterações, primeiro usei aspas simples ( '' ) e usei \ para informar grep que eu quero procurar literal \ , caso contrário grep mostrará o seguinte erro:
$ grep '\' file.txt
grep: Trailing backslash
Em poucas palavras, seu comando pode ser escrito das seguintes maneiras:
-
Usando a Substituição de processos do Bash:
wc -l < <(grep '\' string_demo) -
Uso do método usual:
grep '\' string_demo | wc -l
**** Não use egrep , ele está obsoleto em favor de grep -E .
Verifique se este post de U & L para obter as diferenças entre grep , grep -E & amp; %código%.