正则表达式匹配文件中的特定位置

时间:2009-12-20 23:39:13

标签: regex solaris grep

我正在使用的文件(oraInst.loc)如下所示:

inventory_loc=/u01/app/ORAENV/oracle/oraInventory
inst_group=dba

我需要使用正则表达式来获取app /和/ oracle之间的值。在这种情况下,它将是ORAENV但它可以是任何大小写和长度的任何字母数字字符串,但没有空格。

从我到目前为止看到的使用分组似乎是这样做的方法,但我无法理解它。

我在Solaris 10上使用egrep作为正则表达式引擎。

4 个答案:

答案 0 :(得分:3)

试试这个:

  

\/app\/([\d\w]+)\/oracle\/

答案 1 :(得分:2)

类似的东西:

app/(.*)/oracle

会做的伎俩。

答案 2 :(得分:2)

试试这个,假设你的egrep有-o:

$ echo '/u01/app/ORAENV/oracle/oraInventory' | egrep -o '/app/[0-9A-Za-z]+/oracle/' | cut -d'/' -f3

输出:

ORAENV

使用sed更新解决方案:

$ echo '/u01/app/ORAENV/oracle/oraInventory' | sed 's:.*/app/\(.*\)/oracle/.*:\1:'

答案 3 :(得分:0)

$ echo "inventory_loc=/u01/app/ORAENV/oracle/oraInventory"| nawk -F"/" '{for(i=1;i<=NF;i++)if($i=="app") {print $(i+1);exit} } '
ORAENV