2011-10-05 149 views
1

鑑於以下輸入字符串:的Solaris相當於SED匹配可選的端線

Subject: C=AU, ST=Queensland, L=Brisbane, O=Organisation, OU=Branch, CN=Root CA/[email protected] 
Subject: C=AU, ST=Queensland, L=Brisbane, O=Organisation, OU=Branch, CN=machine.mydept.qld.gov.au 

在Linux上使用sed命令:

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正則表達式語法來幫助解決此問題。

謝謝。

回答

1

我會用awk而不使用sed:

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

Solaris上是否存在/ usr/ucb/sed? Solaris經常提供兩種版本的標準UNIX命令;系統V版本和bsd版本。 bsd版本大多是Linux中使用的版本的基礎。這只是一個猜測,因爲我無法訪問Solaris計算機進行測試,但這是我多年前記得的。

+0

有,但它的工作方式相同.. – sweetfa

+0

大多數Unix的Linux命令是牛羚的,沒有那麼多基於BSD,但有自己的擴展和特異性。 – jlliagre

+0

嗯,是的,但是他們的血統往往是BSD-ish而不是sys V-ish。 –