将linux命令的输出转换为python列表 - 使用正则表达式

时间:2017-05-18 06:55:39

标签: python regex

我使用了以下命令来获取最重要的进程列表:

 ps aux --sort=-%mem

,输出如下:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
prsingh  20785 24.9 26.5 3581008 2084044 ?     Sl   11:28   4:26 /home/prsingh/.config/Ethereum Wallet/binaries/Geth/unpacked/geth --fast --cache 1024
prsingh   3029  1.0  7.6 1428144 602328 ?      Sl   08:26   2:10 /opt/google/chrome/chrome --type=renderer --field-trial-handle=1 --primordial-pipe-token=FDB365719E2EC19E6F4536F485544FC7 --lang=en-GB --ena
prsingh  24866 22.4  5.7 1236812 454032 ?      Sl   11:42   0:44 /opt/google/chrome/chrome --type=renderer --field-trial-handle=1 --primordial-pipe-token=88641F011686F1602A4BBEF8F2A30D49 --lang=en-GB --ena
prsingh   3088  0.2  5.3 1287836 417820 ?      Sl   08:26   0:31 /opt/google/chrome/chrome --type=renderer --field-trial-handle=1 --primordial-pipe-token=FECA2AB7525721EB2EE0DE7DBA8DB391 --lang=en-GB --ena
prsingh   2847  6.2  3.6 1388544 287132 ?      SLl  08:26  12:24 /opt/google/chrome/chrome    
root      1272  3.1  3.3 811276 259752 tty7    Ssl+ 08:25   6:20 /usr/lib/xorg/Xorg -core :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch
prsingh   3558  0.1  2.5 950144 198620 ?       Sl   10:23   0:09 /opt/google/chrome/chrome --type=renderer --field-trial-handle=1 --primordial-pipe-token=57B4A5FE3EB41E14CD7D964712114F3A --lang=en-GB --ena
prsingh   2585  2.4  2.3 1555188 182048 ?      Sl   08:25   4:59 compiz

我正在尝试使用 python 将每一行转换为列表。我无法找到正确的正则表达式。

我希望我的输出像:

['prsingh', 20785, 24.9, 26.5, 3581008 , 2084044, '?' , 's1' , 11:28 , '/home/prsingh/.config/Ethereum Wallet/binaries/Geth/unpacked/geth --fast --cache 1024' ]

我能做到的最好方法是什么?我不能用空格或制表符分隔字符串,因为它们输出的输出不正确。

是否有正则表达式可以帮助或任何其他替代方案?

此问题与Splitting out the output of ps using Python不重复,正则表达式部分的差异。它可以通过拆分字符串来完成,但我愿意实现一个正则表达式。如果我使用具有相同输出但COMMAND部分最终没有的命令,那么问题的重要性也不能满足需要。

具体如果我使用ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head命令,

0 个答案:

没有答案