如何从linux命令返回子字符串

时间:2014-02-13 15:09:23

标签: linux aix

我正在连接到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)

我将在不同的机器上多次使用此命令。那么如何从整个输出中获取这个子串呢?

2 个答案:

答案 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)