Python 如何分割“的输出?”;世卫组织-m“;linux中的命令?

Python 如何分割“的输出?”;世卫组织-m“;linux中的命令?,python,linux,bash,shell,Python,Linux,Bash,Shell,我想分割who命令的输出并将输出存储在变量中 前 我想像这样分割这个输出 var1 = root_user var2 = 2015-09-16 var3 = 08:32 var4 = windows-host.net (This is hostname) 像这样 import os command = os.popen('who -m') text = command.read() text = text.strip() list = text.split() var1 = a[0

我想分割who命令的输出并将输出存储在变量中

我想像这样分割这个输出

var1 = root_user

var2 = 2015-09-16

var3 = 08:32

var4 = windows-host.net (This is hostname)
像这样

import os 

command = os.popen('who -m')
text = command.read()
text = text.strip()
list = text.split()

var1 = a[0]
var2 = a[2]
var3 = a[3]
var4 = a[4]
输出:

>>> var1
'root_user'
>>> var2
'2015-09-16'
>>> var3
'08:32'
>>> var4
'(windows-host.net)'
然而,这是使用Python实现这一点的最简单方法

如果要使用bash脚本执行此操作,请尝试以下命令:

var1=$(who -m | cut -f 1 -d ' ')
var2=$(who -m | cut -f 13 -d ' ')
var3=$(who -m | cut -f 14 -d ' ')
var4=$(who -m | cut -f 15 -d ' ')

以下方面应起作用:

import re

text = "root_user pts/1        2015-09-16 08:32 (windows-host.net)"
var1, var2, var3, var4 = re.search(r'(.*?)\s.*?(\d{4}\-\d{2}\-\d{2})\s(\d{2}:\d{2})\s+\((.*)\)', text).groups()

print 'var1 =', var1
print 'var2 =', var2
print 'var3 =', var3
print 'var4 =', var4
给予:

var1 = root_user
var2 = 2015-09-16
var3 = 08:32
var4 = windows-host.net

在BASH中,您可以使用内置的
read
和:


您还拆分了
2015-09-16 08:32
@ozgur不,此脚本不会这样做。我会将.strip()添加到os.popen('who-m')。read()以清理'\n'。除此之外,你的代码是最简单的方法。@alec_Djin好主意,你怎么看?它正在我的Arch Linux(4.1.6-1)上运行。你可以试试@anubhava的脚本。你想用python或者bash脚本来拆分它吗?
var1 = root_user
var2 = 2015-09-16
var3 = 08:32
var4 = windows-host.net
IFS='( )' read var1 _ var2 var3 var4 _ < <(who -m)
echo "[$var1][$var2][$var3][$var4]"
[root_user][2015-09-16][08:32][windows-host.net]