Shell脚本提取运行中的SID

时间:2018-11-05 10:06:29

标签: shell unix

我需要获取正在运行的Oracle实例的当前SID,我知道一个关键字将成为SID的一部分,如何获取并将其分配给变量。

我正在尝试

ps -ef | grep pmon | grep TESTDB    
oracle    5527 23570  0 05:03 pts/5    00:00:00 /bin/ksh -c ps -ef | grep pmon | grep TESTDB    
oracle   26617     1  0 Sep24 ?        01:10:57 ora_pmon_TESTDB02

从上面我如何仅提取TESTDB02

预先感谢

2 个答案:

答案 0 :(得分:0)

我想你想要

ps -e -o cmd | grep '^ora_pmon_TESTDB' | sed 's/^ora_pmon_//'
  • ps -e -o cmd打印所有进程的命令
  • 然后我只复制以'ora_pmon_TESTDB'开头的进程
  • 然后我使用sed从行的开头删除ora_pmon_字符串
  • 我将留下TESTDB02

答案 1 :(得分:0)

使用awk获取第n个字段:

[here goes your chain of commands] | awk -r '{print $8;}' | awk -F '_' -r '{print $(NF);}'

说明:

  • 您的命令链可以找到信息,但格式不正确
  • awk -r '{print $8;}'仅打印第8个字段,即ora_pmon_TESTDB02
  • awk -F '_' -r '{print $(NF);}'使用_作为字段分隔符(-F选项),并打印最后一个字段TESTDB02