쉘 출력에서 아래 강조 표시된 줄을 자르는 방법. 소스 셸 프로그램은 출력 아래에 있습니다.
$ ./checkhome.sh
Oracle Base는 변경되지 않고 그대로 유지되며 값은 /opt/oracle입니다.
/opt/oracle/app/oracle/product/12.1.0에 설치된 데이터베이스 DB1에 연결합니다.
Oracle 라이브러리가 /opt/oracle에서 /opt/oracle/app/oracle로 변경되었습니다.
/opt/oracle/app/oracle/product/11.2.0에 설치된 데이터베이스 DB2에 연결합니다.
Oracle 라이브러리가 /opt/oracle/app/oracle에서 /opt/oracle로 변경되었습니다.
/opt/oracle/app/oracle/product/12.1.0에 설치된 데이터베이스 DB3에 연결합니다.
$**
스크립트 내용
$ cat checkhome.sh
DB=`ps -ef |grep pmon | grep -v grep |awk '{print $8}'|cut -d '_' -f3`
for i in `echo $DB`
do
export ORACLE_SID=$i
export ORAENV_ASK=NO
. oraenv $i
echo "Connecting Database $i is Installed on $ORACLE_HOME"
done
exit
답변1
텍스트를 필터링하는 가장 쉬운 방법 중 하나는 reverse grep
(from man grep
)를 사용하는 것입니다.
-v, --invert-match
Invert the sense of matching, to select non-matching lines. (-v
is specified by POSIX.)
귀하의 경우 ^
줄의 시작 부분만 일치시키고 -v
일치하지 않는 줄을 인쇄하여 "The Oracle base"로 시작하는 모든 줄을 제외할 수 있습니다.
./checkhome.sh | grep -v "^The Oracle base"
어떤 경우에는 이러한 메시지가 표준 출력 대신 표준 오류로 인쇄됩니다. 이는 단순히 STDERR을 다음으로 리디렉션한다는 의미입니다 /dev/null
.
./checkhome.sh 2>/dev/null