【问题标题】:Solaris equivalent SED matching optional end stringSolaris 等效 SED 匹配可选结束字符串
【发布时间】:2011-10-05 00:58:11
【问题描述】:

给定以下输入字符串:

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

在 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/基本正则表达式语法来帮助解决这个问题。

谢谢。

【问题讨论】:

    标签: regex sed solaris


    【解决方案1】:

    我会使用 awk 而不是 sed:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • Linux 中的大多数 Unix 命令都是 Gnu 的,不是基于 BSD,而是有自己的扩展和特性。
      • 嗯,是的,没错,但他们的血统往往是 BSD 风格而不是 sys V 风格。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-20
      • 1970-01-01
      • 2015-03-23
      相关资源
      最近更新 更多