일부 파일이 포함된 디렉토리가 있습니다.
mkdir _tmpmm
touch a1 b2 c3 d4
ls
# a1 b2 c3 d4
내가 찾을 때ㅏ출력 결과에는 ls
파일만 표시됩니다.a1- ls
출력에는 4개의 파일이 표시되지만같은 줄
ls | grep a
# a1
그러나 다음 줄을 포함하는 "file_with_names.txt"라는 파일을 생성하면 -
cat file_with_names.txt
# a1 b2 c3 d4
# xxx
# zaz
그런 다음 어떤 작업을 수행
grep a file_with_names.txt
또는
cat file_with_names.txt | grep a
나는 얻다-
# a1 b2 c3 d4
# zaz
그래서 내 질문은 - 왜 greping을 하는가?ㅏ출력 에서 ls
전체 라인을 반환하지 않습니다 . 즉 a1 b2 c3 d4
?
답변1
명령 grep
이 주어진 입력과 일치합니다.
ls
여기서 입력은 (나쁜 습관이지만 지금은 무시합시다) 의 출력 이므로 일치 항목은 다음을 포함하는 단일 파일 이름입니다 a
.
ls | grep a
여기서 입력은 출력 cat
이고 출력은 파일의 내용입니다 file_with_names.txt
.
cat file_with_names.txt | grep a
4개의 파일 이름을 포함하는 grep
현재 보고 있는 출력과 일치하지 않는 이유를 묻는다면 이는 사람이 볼 수 있도록 터미널에 기록했는지 여부와 후속 보기를 위해 파이프에 기록했는지 여부에 따라 다른 출력을 생성하기 때문입니다. . 파이프에 쓸 때 어떤 출력이 나오는지 확인하려면 다음을 시도해 보세요.ls
ls
ls | cat
일반적으로 의 출력을 구문 분석하지 않는 것이 가장 좋습니다 ls
. 일반적으로 파일 이름 목록을 얻는 더 좋은 방법이 있습니다.