정규식을 사용하여 grep을 작동시킬 수 없습니다

정규식을 사용하여 grep을 작동시킬 수 없습니다
ssh1% cat temp

sarah

saab

marrrrrrrrra

marrrrrrrtha

ssh1% grep ar*a temp

grep: No match.

이것이 출력이 아니어야합니까?

sarah saab marrrrrra

Windows 10에서 putty와 nxclient를 사용하려고 합니다.

답변1

을(를) 사용 중입니다. 을(를 csh) 확인 *하고 다음으로 확장하려고 시도합니다.쉘 볼그리고 실패했습니다. 즉, csh여기서 말하는 것은 '불일치'가 아니라 '불일치'입니다 grep. 같지 않은Byrne 가족 껍질, csh확장 불가능한 전역 패턴은 명령에 전달되지 않으므로 이를 참조 csh하여 grep.

그렇게 하고 싶지 않기 때문에 여기서는 작은따옴표를 사용하는 것이 좋습니다.끼워 넣다변수를 문자열에 넣습니다.

% grep 'ar*a' temp
sarah
saab
marrrrrrrrra

이 경우 패턴에 큰따옴표가 포함되어 있지 않기 때문에 큰따옴표도 작동 $하지만 어쨌든 여기서는 작은따옴표를 사용하는 것이 좋습니다. 따옴표를 반교환적으로 사용할 수 있는 언어(예: 쉘, Perl 등)에서는 어떤 따옴표를 사용할지 신중하게 고려하는 것이 개발할 가치가 있는 습관입니다. 여기서는 문자열 보간이 필요하지 않으므로 이를 허용하는 인용 스타일을 사용하지 않도록 선택하겠습니다.

그런데 Bourne 쉘 제품군에서도 RE 모드를 호출해야 합니다. Mike Wagner가 위의 의견에서 암시했듯이 정규식과 전역 패턴으로 인해동일한 특수문자를 많이 사용하세요., 때로는 RE 패턴을 작성할 수도 있습니다발생하다또한 특정 파일과 일치하므로 실수로 셸에 의해 확장됩니다.

관련 정보