列番号とパターン一致条件に基づくAWK印刷列

列番号とパターン一致条件に基づくAWK印刷列

静的列と動的列番号の両方に対して次のコマンドの出力形式を再指定するには、awkを使用する必要があります。

 ps -eopid,lstart,cmd | grep java |grep -v grep

以下は、awkコマンドのサンプル入力です。

17524 Wed May  9 08:50:37 2018 /opt/java/latest/bin/java -client -Xms256m -Xmx512m -XX:CompileThreshold=8000 -XX:PermSize=128m -XX:MaxPermSize=256m -Dweblogic.Name=AdminServer -Djava.security.policy=/app/oracle/wls1036/wlserver_10.3/server/lib/weblogic.policy -Dweblogic.system.BootIdentityFile=/projects/domainName/servers/AdminServer/security/boot.properties -Dweblogic.nodemanager.ServiceEnabled=true -Xverify:none -da -Dplatform.home=/app/oracle/wls1036/wlserver_10.3 -Dwls.home=/app/oracle/wls1036/wlserver_10.3/server -Dweblogic.home=/app/oracle/wls1036/wlserver_10.3/server -Ddomain.home=/projects/domainName -Does.client.home=/app/oracle/wls1036/oesclient -Doracle.home=/app/oracle/wls1036/oesclient -Doracle.security.jps.config=/projects/mydomain/config/oeswlssmconfig/AdminServer/jps-config.xml -Dweblogic.management.discover=true -Dwlw.iterativeDev= -Dwlw.testConsole= -Dwlw.logErrorsToConsole= -Dweblogic.ext.dirs=/app/oracle/wls1036/patch_wls1036/profiles/default/sysext_manifest_classpath:/app/oracle/wls1036/patch_ocp371/profiles/default/sysext_manifest_classpath weblogic.Server

出力例:

24519 Wed May 9 23:50:09 2018 -Dweblogic.Name=AdminServer

問題:awkを使用して列番号に基づいて最初のPID、開始日、時刻の値を印刷できますが、場合によっては最後の値の列番号が異なる場合があります。から)。 "-Dweblogic.Name=" キーワードを含む対応する列番号に対して検索された最後の値を印刷し、既存の出力に追加するにはどうすればよいですか。列番号と列検索の出力を結合すると例外が発生します。この出力形式をより簡単に指定できる方法(sed、grep、cutなど)も歓迎します。

ベストアンサー1

たぶんDweblogicをgrepしてからsedすることもできます。

search="-Dweblogic.Name="
ps -eopid,lstart,cmd | \
grep "java.*$search" | \
sed -E 's#([^/]* )/.*('"$search"'[^ ]*).*#\1\2#'

おすすめ記事