UNIX:在如下所示的行中(ps的输出),我只需要提取服务器名称(在-Dweblogic.Name =之后)

时间:2016-07-28 23:16:30

标签: perl unix awk sed

UNIX:在如下所示的行中(ps的输出),我只需要提取服务器名称(在-Dweblogic.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 -Dweblogic.Name = DEVA_SDAT202A -Djava.security.policy = / opt / bea / wls1033 / wlserver_10.3 / server / lib / weblogic.policy -Dweblogic。 ProductionModeEnabled = true -Dweblogic.system.BootIdentityFile = / usr / prod / domains / DEVA / servers / DEVA_SDAT202A / data / nodemanager / boot.properties -Dweblogic.nodemanager.ServiceEnabled = true -Dweblogic.security.SSL.ignoreHostnameVerification = false -Dweblogic .ReverseDNSAllowed = false -Dsdat.config = / usr / prod / domains / DEVA / sdat / config / sdat.properties

2 个答案:

答案 0 :(得分:0)

怎么样:

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

这样做是使用sed从字符串的开头(^)删除所有内容,包括“-Dweblogic.Name =”以及weblogic.Name值之后的所有内容,直到结束字符串($)。

答案 1 :(得分:-1)

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

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

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