grep
a
문자를 검색할 때 동작이 다릅니다. 검색 기준에 문자가 포함되어 있으면 a
다른 문자는 검색되지 않습니다. 그러나 다른 캐릭터에 대해서도 마찬가지입니다. 왜? !
명령: grep [aeiou] file1
또는 grep [eioau] file1
또는 의 경우 grep [a,e,i,o,u] file1
다음 출력이 표시됩니다.
Name : file1
a
참고 1: 출력에서 문자 "a"가 검색 문자로 강조 표시됩니다(스크린샷 첨부).
명령: grep [eiou] file1
또는 의 경우 grep [e,i,o,u] file1
다음 출력이 표시됩니다.
this is test file.
Name : file1
노트 2:문자 "e"와 "i"는 출력에서 검색 문자로 강조 표시됩니다(스크린샷 첨부).
파일 1예:
this is test file.
Name : file1
a
답변1
a
현재 디렉터리에 이름이 파일입니다. 에 전달된 RE를 참조하지 않았 grep
으므로 다음과 같은 일이 발생합니다.
주어진
grep [aeiou] file1
쉘은 [aeiou]
이를 확인하고 유효한 (glob) 패턴이므로 단일 문자 파일인 a
, e
, i
, , 와 o
일치 시키려고 시도합니다 u
. 성공하면 인수를 일치하는 파일로 바꾼 a
다음 전체 결과를 명령으로 실행합니다.
grep a file1
그러면 표시되는 출력이 제공됩니다. 쉘이 패턴과 일치하지 않으면 변경되지 않은 채로 유지된다는 점을 지적해야 합니다. 이는 [eiou]
명백한 [aeiou]
"실패"가 있는 곳에서도 성공을 가능하게 합니다.
해결책은 다음과 같이 파일이 아닌 매개변수를 작은따옴표로 묶는 것입니다.
grep '[aeiou]' file1