O meu entendimento está correto sobre egrep -se arquivo1 arquivo2?

1

Estou usando o KSH, Solaris 5.10. Suponha que file1 contenha uma lista de frutas e file2 contenha uma lista de frutas & nozes. Meu entendimento sobre o seguinte comando

egrep -if file1 file2 

é que ele pegará a linha 1 de file1 e procurará por todo o file2 e repetirá esse processo para todas as linhas em file1 .

Assim, a saída final será todas as frutas presentes em file1 e file2 . Corrija-me se estiver errado e sugira melhorias, se necessário.

    
por ayrton_senna 20.06.2015 / 01:24

1 resposta

2

O mecanismo interno pode ser diferente, mas sim, o efeito é o que você descreveu. Advertências:

  • O comando como indicado corresponderá às linhas em file2 , se alguma parte corresponder a uma linha em file1 . Portanto, apple in file1 corresponderá a pineapple em file2 . Você pode evitar isso usando -x :

    -x    Consider  only  input  lines that use all characters in the line
          excluding the terminating <newline> to  match  an  entire  fixed
          string or regular expression to be matching lines.
    

    Se você usar isso, acho que você pode ignorar egrep e usar grep diretamente.

  • Uma linha vazia em file1 fará com que tudo em file2 seja impresso, portanto você deve filtrar essas linhas:

    grep -xif <(grep . file1) file2
    
  • Dependendo do que seus arquivos reais contêm, talvez você queira tratar file1 como uma lista de sequências fixas em vez de expressões regulares estendidas. Um pea. pode corresponder a pear . Então faça:

    grep -xiFf <(grep . file1) file2
    
por 20.06.2015 / 01:37

Tags