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 = "|"}'