UNIX:在下面的一行(ps的输出)中,我只需要提取服务器名称(位于-Dwelogic.name=之后)



UNIX:在下面这样的行中(ps的输出),我只需要提取服务器名称(在-Dwelogic.name=之后)

用户25765 25711 0 Jun11?10:21:15/opt/bea/wls1033/jdk1.6.0_22/bin/java-server-Xms512m-Xmx512m-XX:PermSize=128m-XX:MaxPermSize=256m-verbose:gc-Xloggc:/var/prod/logs/DEVA/DEVA_SDAT202A/gc_DEVA_.log-Dwelogic.Name=DEVA_SDAT202A-Djava.security.policy=/opt/bea/Wls103/wlserver/lib/weblogic.policy-Dwelogic.ProductionModeEnabled=true-Dwelogic.system.BootIdentityFile=/usr/prod/domains/DEVA/servers/DEVA_SDAT202A/data/nodemanager/boot.properties-Dwelogic.nodemanager.ServiceEnabled=true-DweLogic.security.SSL.ignoreHostnameVerification=false-Dwelogic.ReverseDNSAllowed=false-Dsdat.config=/usr/prot/domains/DEWA/sdat/config/sdat.properties

关于:

ps ...parameters... | sed -e "s/^.* -Dweblogic.Name=([^ ]*).*$/1/"

它所做的是使用sed删除从字符串(^)开始到"-Dwelogic.Name="(包括"-Dwelogic.Name=")的所有内容,以及weblogic值之后的所有内容。名称,直到字符串($)结束。

Perl可能不是最好的工具,但如果您喜欢它,这样的工具会起作用。我假设服务器名称中不能有空格。它将排除不匹配的行。如果你觉得它更容易的话,你可以先通过grep进行过滤。

ps whatever_args | perl -ne "print "$1n" if (/Dweblogic.Name=([^s]+)/)"

我在Windows上进行了测试,因此"但我认为unix更能接受命令行上的单引号

最新更新