簡體   English   中英

awk(或sed或grep)以削減參數,等號和值

[英]awk (or sed or grep) to cut parametr, equal sign and value

我是Linux的新手。 當我運行這樣的命令

 ps -ef | grep 5312

系統顯示有關PID 5312過程的所有信息。例如,輸出看起來像

tomcat    5312     1  0 20:03 ?        00:00:09 /usr/lib/jvm/jre/bin/java -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Xms500M -Xmx700M -server -XX:+UseParallelGC -classpath /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/opt/tomcat -Dcatalina.home=/opt/tomcat -Djava.io.tmpdir=/opt/tomcat/temp org.apache.catalina.startup.Bootstrap start

從這樣的輸出中,我只想知道“ tmpdir = / opt / tomcat / temp”參數。 我只需要tmpdir,等號和等號后的值。 我該如何使用sed或awk(或grep)呢?

grep-o選項一起使用僅返回匹配的部分。

ps -ef | grep 5312 | grep -o 'tmpdir=[^ ]*'

由於您要求awk:

ps -ef|grep -v awk|awk '{for(i=1;i<=NF;i++){if($i ~ /tmpdir/){print $i}}}' | awk -F'.' '{print $NF}'

哪里:

ps -ef :顯示所有進程。

grep -v awk :確保您不顯示自己的awk進程。

for(i=1;i<=NF;i++) :將遍歷當前記錄的所有字段,直到到達最后一個字段

if($i ~ /tmpdir/){print $i}} :由於如果當前包含關鍵字字符串“ tmpdir”,您將遍歷各個字段(該字段)。

awk -F'.' '{print $NF}' awk -F'.' '{print $NF}' :您只請求了tmpdir參數,因此您希望最后一個字段中的所有內容都帶有一個點作為字段分隔符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM