我正在使用的文件(oraInst.loc)如下所示:
inventory_loc=/u01/app/ORAENV/oracle/oraInventory
inst_group=dba
我需要使用正则表达式来获取app /和/ oracle之间的值。在这种情况下,它将是ORAENV但它可以是任何大小写和长度的任何字母数字字符串,但没有空格。
从我到目前为止看到的使用分组似乎是这样做的方法,但我无法理解它。
我在Solaris 10上使用egrep作为正则表达式引擎。
答案 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