2015-09-16 39 views

回答

0

下面應該工作:

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 
+0

謝謝這是很好的解決方案! –

2

喜歡這個?

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 ' ') 
+0

你也分裂'2015-09-16 08:32' – ozgur

+0

@ozgur不,這個腳本不會這樣做。 –

+0

我會將.strip()添加到os.popen('who -m').read()來清理'\ n'。除此之外,你的代碼是最簡單的方法。 –

1

在一個BASH,你可以使用內置的readprocess substitution來做到這一點:

IFS='()' read var1 _ var2 var3 var4 _ < <(who -m) 

IFS='()'將設置輸入字段分隔符作爲(的一個或空間或)

驗證變量:

echo "[$var1][$var2][$var3][$var4]" 
[root_user][2015-09-16][08:32][windows-host.net]