O que este comando egrep faz?

1

Eu corro este comando

egrep "\" string_demo | wc -l

Eu tenho saída abaixo:

akshay@akshay-K53SC:~/shell$ egrep "\" string_demo | wc -l
> abc
> pqr
> xyz
> 

">" continuará até que eu pressione Ctrl + D . Então o que é isso?

Além disso, qual é a diferença exata entre grep , egrep e fgrep ?

    
por Akshay Patel 15.04.2015 / 21:03

3 respostas

5

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:

**** 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%.

    
por heemayl 15.04.2015 / 21:16
1

egrep procura linhas com o que você diz para pesquisar entre aspas do arquivo, wc -l conta o número de linhas. Você está basicamente informando ao egrep para contar as linhas com barras invertidas nelas e, em seguida, permite que wc -l conte quantas dessas linhas.

    
por Sergiy Kolodyazhnyy 15.04.2015 / 21:08
0

">" continuará até que eu pressione Ctrl + D. Então, o que é isso?

  • > é usado pelo bash para indicar que ele espera mais entrada. É por isso que termina apenas quando ctrl + D é pressionado, o que simula o EOF. Em seu comando, "\" string demo não é um patteren completo, porque o segundo " é escapado por \ e precisa de uma finalização correspondente a " .

qual é a diferença exata entre grep, egrep e fgrep?

De man egrep :

  • egrep é o mesmo que grep -E. O fgrep é o mesmo que o grep -F. O rgrep é o mesmo que o grep -r. A chamada direta como egrep ou fgrep é descontinuada , mas é fornecida para permitir que aplicativos históricos que dependem dela sejam executados sem modificações. *

  • grep -E: o padrão fornecido é uma expressão regular estendida .

  • grep -F: o padrão fornecido é correspondido textualmente
  • grep -r: encontra recursivamente em todos os arquivos. O nome do diretório é fornecido em vez do nome do arquivo
por MAKZ 15.04.2015 / 22:04