나는 (Perl/Python 호환 정규식) 정규식을 선호합니다.
man grep
:
....하지만 PCRE가 시스템에 있는 경우에만 작동합니다.
가장 일반적인 Linux 배포판이 이 기능을 지원합니까?
나는 freebsd, Solarix, busybox에 관심이 없습니다...
답변1
폴리 메라 제 연쇠 반응거의 모든 곳에 설치됨섬기는 사람그리고데스크탑Linux 시스템이지만 경량 시스템이나 임베디드 시스템(휴대폰, 라우터, TV 및 기타 시스템)에서 반드시 실행할 수 있는 것은 아닙니다.사물의 인터넷), 일반적으로 표준 사용자 공간이 매우 단순화된 버전을 갖고 있기 때문입니다(기본적으로바쁜 상자베이스에는 거의 확실하게 PCRE가 부족합니다.
데비안에는 하나가 있습니다인기 콘테스트다양한 패키지의 설치 지표를 측정하는 기능입니다. grep
(25번째 가장 일반적인, 176,000개 설치)는 다음에 따라 다릅니다.아니요선택 사항) libpcre3
(94번째로 가장 일반적임, 174,000회 설치). 그 차이점을 설명할 수는 없지만 걱정하지도 않습니다.
전체 Linux 배포판을 실행하는 최신 데스크톱 및 서버에는 PCRE를 지원하는 컴파일된 버전이 있을 것이라고 가정하는 것이 안전합니다 grep
.
그러나 PCRE의 이식성을 높이려면 (1k 설치의 비트 9363) 또는 grep -P
( 180 설치의 비트 21728) 에 의존하지 말고 그냥 (175k 설치의 비트 88)을 사용하십시오.pcregrep
ack
perl
perl -ne 'print if /regexp/'
일부 서버에는 "보안 목적"을 위해 의도적으로 Perl, Python 및 PHP가 부족합니다. 즉, 많은 악성 스크립트(예:루트킷)는 이에 의존하므로 실행할 수 없습니다. 이런 상황은 매우 드뭅니다(강력한 악성 POSIX 쉘 스크립트가 많기 때문에 약간 어리석기도 합니다).
참고 2: Perl은 느립니다(Python과 마찬가지로). LibPCRE는 더 빠르지만 정규 표현식이 단순할수록 성능이 더 좋습니다. 가능하다면 PCRE 영역을 탐구하는 대신 grep
(BRE, 기본 정규 표현식)만 사용하거나 (ERE, 확장 정규 표현식)을 사용해 보세요 .grep -E
답변2
pcre
제가 기억하는 한, 저는 CentOS, Ubuntu, RedHat, Debian 및 이를 기반으로 하는 기타 배포판과 같은 많은 Linux 배포판을 보았습니다 . 나는 이것이 당신에게 어떤 문제를 일으킬 것이라고 생각하지 않습니다. 다음 소스도 사용할 수 있습니다.