Solaris等效SED匹配可选的结束字符串

时间:2011-10-05 00:58:11

标签: regex sed solaris

给出以下输入字符串:

Subject: C=AU, ST=Queensland, L=Brisbane, O=Organisation, OU=Branch, CN=Root CA/emailAddress=Support@mydept.qld.gov.au
Subject: C=AU, ST=Queensland, L=Brisbane, O=Organisation, OU=Branch, CN=machine.mydept.qld.gov.au
使用sed命令在Linux上

echo $string | sed -n '/Subject:/s/.*CN=\(.*\)\([\/?].*\|$\)/\1/p'

我得到以下内容:

Root CA
machine.mydept.qld.gov.au

在Solaris上尝试相同的操作不会给我任何回应。 将模式更改为

/Subject:/!d;s/.*CN=\(.*\)\([\/].*\)/\1/p

给了我根CA但是无法传递其中字符串的剩余部分是所需模式的项目(即没有/ emailaddress附加到CN =字段)

有人可以协助使用solaris / basic正则表达式语法来帮助解决此问题。

感谢。

2 个答案:

答案 0 :(得分:1)

我会使用awk而不是sed:

echo $string | nawk '/Subject:/ {sub(".*CN=",""); sub("/.*",""); print}'

答案 1 :(得分:0)

Solaris上是否有/ usr / ucb / sed? Solaris通常提供两个版本的标准UNIX命令;系统V版和bsd版。 bsd版本主要是Linux中使用的版本的基础。这只是一个猜测,因为我无法访问要测试的Solaris计算机,但这是我多年前所记得的。

相关问题