Solaris의 Grep 및 egrep 문제

Solaris의 Grep 및 egrep 문제

Solaris에서 이 명령을 실행할 때 문제가 발생합니다.

grep -Ev "(^#|^EBM_SERVER|^$)" ${EBM_CONF} | awk -F, '{print $2"|"}' | tr -d "\n" | sed 's/|$//g'

다음 오류 메시지가 나타납니다.

egrep:illegal option -- E
usage: egrep [-bchilnsv] [-e exp] [-f file] [string] [file] ...
egrep:syntax error

답변1

Solaris의 기본 환경에서는 오래된 유틸리티를 얻게 됩니다.

보다 현대적인 유틸리티를 얻으려면 업데이트해야 합니다 $PATH:

PATH=`getconf PATH`:$PATH export PATH

이렇게 하면 80년대 유틸리티가 아닌 90년대 유틸리티가 제공됩니다(과언이 아닙니다...).

그러면 당신 grep의 의지는 좀 더 표준처럼 행동할 것입니다 grep.

egrep또는 대신 사용할 수 있습니다 grep -E.

하지만 여기서는 awk의 상위 집합이므로 egrep전혀 그럴 필요가 없습니다.egrep

< "$EBM_CONF" awk -F, '! /^#|^EBM_SERVER|^$/ {print $2"|"}' |
   tr -d "\n" |
   sed 's/|$//g'

로 줄을 연결하려면 를 |사용하는 것이 좋습니다 paste. 마지막 두 명령을 로 바꾸 paste -s -d '|' -거나 다음을 사용하여 모든 작업을 수행할 수 있습니다 awk.

< "$EBM_CONF" awk -F, '! /^#|^EBM_SERVER|^$/ {printf "%s", sep $2; sep = "|"}'

관련 정보