Shell 출력에서 ​​아래 강조 표시된 줄을 자르는 방법

Shell 출력에서 ​​아래 강조 표시된 줄을 자르는 방법

쉘 출력에서 ​​아래 강조 표시된 줄을 자르는 방법. 소스 셸 프로그램은 출력 아래에 있습니다.

$ ./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

관련 정보