
나는 우연히 만났다이것내 문제를 설명하는 게시물. file.txt
"foo World"를 포함하는 파일이 있다고 가정합니다 .
Tyler가 게시한 답변은 많은 것을 설명하지만 어떻게 해야 하는지 혼란스럽습니다.
cat file.txt | grep "foo"
~와 비슷하다
grep "foo" file.txt
나는 grep
다음이 필요하다고 생각했다
grep input argument // input is the string to search for (i.e) foo and
// argument is the file path (./file.txt)
이제 출력은 cat file.txt
파일의 내용이며, 이는 ? foo World
의 입력이 됩니다 . grep
나 맞아? 그렇다면 grep
파일 경로가 문자열로 필요하다고 생각했습니까?
답변1
대부분의 명령은 입력을 위해 열어야 하는 파일이거나 STDIN을 통해 명령에 전달되는 데이터 스트림인 입력을 처리할 수 있습니다.
의 내용이 cat file.txt
파이프( |
)를 통해 다른 명령으로 전송되면 왼쪽 파이프로 전달되는 STDOUT을 통한 출력이 설정되어 파이프의 STDIN 오른쪽에 있는 명령에 공급됩니다.
내용이 파이프를 통해 STDOUT -> STDIN을 통해 전달되지 않는 경우 명령은 명령줄 인수를 통해 이름으로 전달된 파일을 열어 데이터를 수신할 수 있습니다.
예
출력을 STDOUT으로 보냅니다.
$ cat file
1
2
3
4
5
의 출력은 STDOUT을 통해 파이프를 통해 의 STDIN cat file
으로 전송됩니다 .grep
$ cat file | grep 5
5
파일을 명령줄 인수로 처리합니다.
$ grep 5 file
5
STDIN을 통해 파일 내용을 직접 처리합니다.
$ grep 5 < <(cat file)
5
file
여기서는 위의 STDIN을 통해 의 내용을 전달할 수 있음 을 보여줍니다 grep
.