Solaris

solaris + grep 在 solaris 中的語法

  • March 21, 2017

我的目標是與 solaris 和 linux 上的 hosts 文件中的字元串 snmpmanager 完全匹配

以下命令適用於 Linux (red-hat 5.1) 但不適用於 SunOS,請告知如何使語法適合 solaris?

來自 solaris 作業系統的範例

  grep -icE '(^|[[:space:]])snmpmanager($|[[:space:]])' /etc/hosts
  grep: illegal option -- E

在我修復它之後

      egrep -i '(^|[[:space:]])snmpmanager($|[[:space:]])'  /etc/hosts
 or   egrep -i '(^|[\s])snmpmanager($|\s])'  /etc/hosts
 or   egrep -i '(^|[\t])snmpmanager($|\t])'  /etc/hosts

但我沒有得到任何匹配輸出(但 snmpmanager 已在主機文件中定義)??

我的主機文件

    10.170.10.5      loghost
    10.170.10.61   Master SyslogSer vip Tcc NtpServer1 NtpServer2 snmpManager snmpManagerPA1 snmpManagerPA2

我不認為標準的 Solaris (e)grep 理解[[:space:]]語法,所以你必須使用類似的東西

egrep -i (^| |<-TAB->)snmpmanager($| |<-TAB->)

<-TAB->在哪裡Ctrl-V``Tab

如果您使用 /usr/xpg4/bin/egrep 那麼它按預期工作。

/usr/xpg4/bin/egrep -i '([[:space:]])snmpmanager($|[[:space:]])'  /etc/hosts

使用egrep -ic而不是grep -icE. 請注意, -i 使匹配不區分大小寫,這可能是您想要的,也可能不是您想要的,具體取決於您對“完全”的定義

引用自:https://serverfault.com/questions/358047