Linux의 grep 및 파이프 이해

Linux의 grep 및 파이프 이해

내가 우연히 만났어이것게시물에서 내 문제를 설명했습니다. "foo World"라는 파일이 있다고 가정합니다 file.txt.
Taylor가 게시한 답변은 많은 것을 설명하지만 어떻게 해야 하는지 혼란스럽습니다.

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

from의 출력은 cat fileSTDOUT을 통해 STDIN으로 파이프됩니다.grep

$ cat file | grep 5
5

파일을 명령줄 인수로 처리합니다.

$ grep 5 file 
5

STDIN을 통해 파일 내용을 직접 처리합니다.

$ grep 5 < <(cat file)
5

file여기서는 위의 STDIN을 통해 무엇을 전달할 수 있는지 보여줍니다 .grep

관련 정보