![](/img/trans.png)
[英]How to change grep and cut commands by only one awk/sed command in the following example?
[英]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.