簡體   English   中英

如何在linux中拆分“who -m”命令的輸出?

[英]How do i split output of “who -m”command in linux?

我想將who命令的輸出和存儲輸出分成變量

EX。

[root@ip ~]# who -m
root_user pts/1        2015-09-16 08:32 (windows-host.net)

我想把這個輸出分開

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

在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]

以下應該有效:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM