在linux中获取具有进程ID的所有进程名称

时间:2015-03-03 10:17:25

标签: perl shell awk sed grep

我正在尝试以下选项

1.复制

输出文本中我需要的数据
ps ax -o rss,command | sort -nr | head -n 10

2.但此输出包含如下所示的提取

856232 /usr/java/jdk1.7.0/bin/java -Djava.util.logging.config.file=/data/vmware/server/xxxxx/conf/logging.properties -XX:MaxPermSize=512m -Xmx1024m -Xms1024m -XX:PermSize=256m -Xss256k -

但我只在/data/vmware/server之后才需要字符串,即xxxxx

我尝试了sed和awk但没有得到预期的。

1 个答案:

答案 0 :(得分:1)

你可以使用grep。

ps ax -o rss,command | sort -nr | head -n 10 | grep -oP 'data/vmware/server/\K[^/]*'

示例:

$ echo '856232 /usr/java/jdk1.7.0/bin/java -Djava.util.logging.config.file=/data/vmware/server/xxxxx/conf/logging.properties -XX:MaxPermSize=512m -Xmx1024m -Xms1024m -XX:PermSize=256m -Xss256k -' | grep -oP 'data/vmware/server/\K[^/]*'
xxxxx

的sed。

$ echo '856232 /usr/java/jdk1.7.0/bin/java -Djava.util.logging.config.file=/data/vmware/server/xxxxx/conf/logging.properties -XX:MaxPermSize=512m -Xmx1024m -Xms1024m -XX:PermSize=256m -Xss256k -' | sed 's~.*data/vmware/server/\([^/]*\).*~\1~'
xxxxx