내 문제를 설명하는 게시물을 발견했습니다. “foo World”를 포함하는 file.txt라는 파일이 있다고 가정합니다.
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의 출력은 이것은 grep의 입력이됩니까? 나 맞아? 그렇다면 grep에 파일 경로가 문자열로 필요하다고 생각 했습니까?

댓글

  • grep(1) 매뉴얼 페이지 (유형 man grep)에는 “grep [options] PATTERN [FILE …]”이 표시됩니다. “FILE”뒤에 “…”가오고 있다는 사실은 여러 파일 인수가있을 수 있음을 의미합니다. 대괄호 ([]) 안에 있다는 사실은 파일 인수가 선택 사항임을 의미합니다 (즉, 무엇이든). 계속 읽으면“ Grep 가 명명 된 입력 파일 (또는 파일이 명명되지 않은 경우 표준 입력 또는 파일 이름 - 주어진)….” 따라서 지정된 파일이 없으면 grep은 표준 입력을 검색합니다.

Answer

대부분의 명령은 입력을 위해 열어야하는 파일이거나 STDIN을 통해 명령에 전달되는 데이터 스트림입니다.

cat file.txt는 파이프 (|)를 통해 다른 명령으로 전송됩니다. 출력은 STDOUT을 통해 왼쪽에있는 파이프로 전달되고 설정되고 다음 명령에 공급됩니다. “s on the right side of the pipe”s STDIN.

내용이 STDOUT-> STDIN을 통해 파이프를 통해 전달되지 않는 경우 명령은 이름으로 전달 된 파일을 통해 데이터를 수신 할 수 있습니다. 명령 줄 인수.

출력을 STDOUT으로 보냅니다.

$ cat file 1 2 3 4 5 

는 STDOUT을 통해 파이프를 통해 grep“의 STDIN으로 전송됩니다.

$ cat file | grep 5 5 

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

$ grep 5 file 5 

STDIN을 통해 직접 파일 내용 처리

$ grep 5 < <(cat file) 5 

여기 “file의 콘텐츠가 위의 STDIN을 통해 grep로 이동할 수 있음을 보여줍니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다