porque o grep não imprime a linha inteira? [duplicado]

1
    

Esta pergunta já tem uma resposta aqui:

    

Quando eu insiro o comando ls , recebo a saída abaixo.

-$ ls
aNode  ANode  bNode  BNode  cNode  CNode  DUMP  file1  hello.txt  TEST.txt
-$

Como visto, a saída acima é one linha que tem filenames separado por spaces .

Em seguida, quando eu uso grep para encontrar uma correspondência.

Eu estava esperando que, se uma correspondência for encontrada, a linha inteira será impressa.

Mas, pelo contrário, o grep só imprime a correspondência, mas não a linha inteira que contém a correspondência. Por favor, veja abaixo.

-$ ls | grep 'aNode'
aNode
-$

Por que isso está acontecendo? Por que grep não imprime a linha inteira?

    
por sps 11.06.2015 / 04:56

1 resposta

6

ls tem diferentes formatos de saída e exibe as coisas de maneira diferente se estiver gravando em um terminal em vez de em um pipe. Ao gravar em um pipe, ele grava apenas uma entrada por linha, portanto, grep pode trabalhar em cada listagem individualmente.

Então, quando você faz isso grep , você está obtendo uma saída diferente de ls do que quando você acabou de executar ls e imprimir na tela.

Você pode ver o mesmo efeito que o grep está experimentando se você fizer isso

ls | cat

, que exibirá todas as entradas, uma por linha.

    
por 11.06.2015 / 04:58

Tags