我正在连接到exadata并希望在其中获取有关“ORACLE_HOME”变量的信息。所以我正在使用这个命令:
ls -l /proc/<pid>/cwd
这是输出:
2 oracle oinstall 0 Jan 23 21:20 /proc/<pid>/cwd -> /u01/app/database/11.2.0/dbs/
我需要得到最后一部分:
/u01/app/database/11.2.0 (i dont want the "/dbs/" there)
我将在不同的机器上多次使用此命令。那么如何从整个输出中获取这个子串呢?
答案 0 :(得分:2)
Awk和grep适用于这些类型的问题。
新:
ls -l /proc/<pid>/cwd | awk '{print ($NF) }' | sed 's#/dbs/##'
旧:
ls -l /proc/<pid>/cwd | awk '{print ($NF) }' | egrep -o '^.+[.0-9]'
awk打印输入的最后一列,这是你的ls命令,然后grep抓取最后一次出现的数字和点的字符串的开头。这是一种情境解决方案,也许不是最好的。
答案 1 :(得分:0)
解析ls
的输出通常被认为是次优的。我会使用更像这样的东西:
dirname $(readlink -f /proc/<pid>/cwd)