
eu me depareiessepost que explica meu problema. Suponha que exista um arquivo chamado file.txt
que contenha "foo World".
A resposta postada por Tyler explica muito, mas estou confuso sobre como
cat file.txt | grep "foo"
é similar a
grep "foo" file.txt
Eu pensei grep
que era necessário o seguinte
grep input argument // input is the string to search for (i.e) foo and
// argument is the file path (./file.txt)
Agora a saída de cat file.txt
é o conteúdo do arquivo que foo World
se torna a entrada do grep
? Estou correcto? Se sim, pensei que grep
era necessário um caminho de arquivo como uma string?
Responder1
A maioria dos comandos pode lidar com entradas que são um arquivo que precisam ser abertos para entrada ou como um fluxo de dados que é passado para o comando via STDIN.
Quando o conteúdo de cat file.txt
é enviado para outro comando através de um pipe ( |
) a saída via STDOUT que é passada para o pipe do lado esquerdo, é configurada e alimentada para o comando que está do lado direito do STDIN do pipe.
Se o conteúdo não estiver sendo passado via STDOUT -> STDIN por meio de um pipe, os comandos poderão receber dados abrindo arquivos que são passados por nome por meio de argumentos de linha de comando.
Exemplos
Envia a saída para STDOUT.
$ cat file
1
2
3
4
5
A saída de cat file
é enviada via STDOUT para grep
STDIN por meio do pipe.
$ cat file | grep 5
5
Processando o arquivo como um argumento de linha de comando.
$ grep 5 file
5
Processando o conteúdo do arquivo diretamente via STDIN.
$ grep 5 < <(cat file)
5
Aqui estou demonstrando que o conteúdo de file
pode ser direcionado grep
via STDIN acima.