egrep не работает должным образом в системе SunOS

Вот что я хочу достичь на SunOS:

Только шаблон, такой как [text_text=text] , [text=text] , [text] или text являются допустимыми шаблонами, где по text я имею в виду что угодно: 0-9,az,AZ, space, newline, tab, enter . Все, кроме этого, является недопустимым. т.е. egrep -v должен его захватить. Шаблоны, такие как [[[text] , [text]]] , [text , text] также должны быть недействительными

Я использовал ниже в Linux box (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 

File1:

 [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] 

Как часто бывает в Solaris, /usr/bin/egrep является устаревшей реализацией, которая не совместима с POSIX, в то время как /usr/xpg4/bin/egrep является реализацией, совместимой с POSIX, и практически не имеет ничего общего с POSIX. Если вы не используете устаревшие приложения Solaris из пред-POSIX-дней, убедитесь, что /usr/xpg4/bin находится перед /usr/bin в вашей $PATH .

Инструменты GNU (к которым вы привыкли в Linux) часто имеют множество функций, помимо мандатов POSIX. Если вам нужна переносимость, придерживайтесь POSIX. POSIX не определяет egrep ; это распространенный синоним grep -E , то есть grep с расширенным синтаксисом регулярных выражений .

Solaris /usr/bin/egrep не поддерживает {…} вхождения. Здесь вы используете только {1} который не имеет никакого эффекта, поэтому просто снимите его.

Ни реализация egrep ни grep -E в Solaris не поддерживает обратные следы для символов управления. Это расширение GNU. POSIX оставляет недостоверную букву. Используйте класс [:space:] вместо \t\n\v\f\r .

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