egrep이 SunOS 시스템에서 예상대로 작동하지 않습니다.

egrep이 SunOS 시스템에서 예상대로 작동하지 않습니다.

이것이 제가 SunOS에서 달성하고 싶은 것입니다:

[text_text=text][text=text], [text]또는 같은 패턴만 text유효한 패턴입니다. 즉, text에 있는 모든 패턴을 의미합니다 0-9,a-z,A-Z, space, newline, tab, enter. 다른 모드는 유효하지 않습니다. 즉, egrep -v캡처해야 합니다. [[[text], [text]]], , 같은 [text패턴 text]도 유효하지 않습니다.

Linux 상자(RHEL)에서 다음 명령을 사용했는데 제대로 작동했습니다.

egrep -v "^[ ]*([a-zA-Z0-9\t\n\v\f\r ]*|\[{1}[_a-zA-Z0-9\t\n\v\f\r ]*(=[a-zA-Z0-9\t\n\v\f\r ]*)?\]{1})[ ]*$" file1

파일 1:

[FEATURE_ID=2]
[FEATURE_REV=1]
[NO_OF_BYTES=18]
001203658080400160b9d0ae45000080
[CRC]
c068

RHEL BOX에서 egrep -v위 명령문은 예상대로 출력을 제공하지 않습니다.

동일한 작업이 작동하지 않고 출력을 제공하므로 Solaris에서 이를 어떻게 달성할 수 있습니까?

[FEATURE_ID=2]
[FEATURE_REV=1]
[NO_OF_BYTES=18]
[CRC]

답변1

Solaris의 경우와 마찬가지로 /usr/bin/egrepPOSIX와 호환되지 않는 레거시 구현이 /usr/xpg4/bin/egrep있지만 POSIX와 호환되는 구현이 있으며 POSIX 외에는 거의 아무것도 없습니다. 기존 POSIX 이전 Solaris 응용 프로그램을 실행하지 않는 한 다음 사항을 확인하십시오./usr/xpg4/bin전에 /usr/bin당신의$PATH.

GNU 도구(Linux에서 익숙한 도구)에는 POSIX에서 지정한 것 이상의 많은 기능이 있는 경우가 많습니다. 이식성이 필요하다면 POSIX를 사용하세요. POSIX에는 정의가 없습니다 egrep. 이는 광범위한 동의어입니다.grep -E, 즉 grep,확장 정규식통사론.

Solaris는 발생 횟수 계산을 /usr/bin/egrep지원하지 않습니다 {…}. 여기서 만 {1}사용하고 효과가 없으니 그냥 버리시면 됩니다.

egrepSolaris나 Solaris에서의 구현에서는 grep -E제어 문자의 백슬래시 이스케이프를 지원하지 않습니다. 이것은 GNU 확장입니다. POSIX는 백래시 문자를 정의하지 않습니다. [:space:]대신 클래스를 사용하십시오 \t\n\v\f\r.

LC_CTYPE=C grep -Ev '^[ ]*([[:alnum:][:space:]]*|\[[_[:alnum:][:space:]]*(=[[:alnum:][:space:]]*)?\])[ ]*$' file1

관련 정보