如何从 Shell 输出中修剪下面突出显示的行

如何从 Shell 输出中修剪下面突出显示的行

如何从 Shell 输出中修剪下面突出显示的行。源 shell 程序位于输出下方。

$ ./checkhome.sh

Oracle 基数保持不变,值为 /opt/oracle

连接数据库 DB1 安装在 /opt/oracle/app/oracle/product/12.1.0

Oracle 库已从 /opt/oracle 更改为 /opt/oracle/app/oracle

连接数据库 DB2 安装在 /opt/oracle/app/oracle/product/11.2.0

Oracle 库已从 /opt/oracle/app/oracle 更改为 /opt/oracle

连接数据库 DB3安装在/opt/oracle/app/oracle/product/12.1.0

$ **

脚本内容

$ 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

过滤文本的最简单方法之一是使用反向grep(来自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

相关内容