grep이 이상하게 동작합니다

grep이 이상하게 동작합니다

grepa문자를 검색할 때 동작이 다릅니다. 검색 기준에 문자가 포함되어 있으면 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

관련 정보