2013-08-05 71 views
0

我想查找當前登錄用戶的已使用DISPLAY。爲此,我想使用sed。首先,who輸出:

[[email protected] ~]$ who 
orschiro tty1   2013-08-05 23:15 
orschiro pts/0  2013-08-05 23:17 (:0) 
orschiro pts/1  2013-08-05 23:22 (:0) 
orschiro pts/2  2013-08-05 23:22 (:0) 

這就是我想要檢索:0爲登錄用戶orschiro

我使用以下表達式,但它不檢索預期的結果。相反,輸出爲空:

[[email protected] ~]$ who | sed -e "/orschiro/! d;/pts/d;s/^.*[^0-9]\\(:[0-9.]\\+\\).*$/\\1/p;d" | head -n1 
[[email protected] ~]$ 

我的表情出了什麼問題?

+0

'/ pts/d'將刪除所有感興趣的行。如果您編輯了您的問題以包含您所需的輸出,請提供以上輸入,這將非常有幫助。祝你好運。 – shellter

+0

在一般情況下,假設只能有一個登錄用戶使用顯示器,當然是錯誤的。 – tripleee

+0

是的。我的意思是你可以通過循環登錄的用戶來輕鬆地擴展這種方法。在我的情況下,雖然沒有必要。 – orschiro

回答

4

命令/pts/d;刪除所有包含字符串pts的行。 試試這個:

who | sed -e '/orschiro/! d; /pts/! d; s/^.*\(:[0-9.]\+\).*$/\1/p;d' | head -n1 
+3

或更好的是誰| sed -n'/^orschiro。*(\(:[0-9] * \))$ /!d; s // \ 1/p; q'' – tripleee

+0

是的,這個肯定更好,+1。 –

+0

這個很棒。謝謝! – orschiro

2

也許這樣?

who | awk -F '[()]' '/orschiro/{print $(NF-1)}' | grep -v orschiro | head -n1 

who | awk -F '[()]' '/orschiro/{print $(NF-1)}' | grep -v orschiro | uniq 
1

試試這個:
誰| awk'/ orschiro/{print $ 5}'| sed -e's/[()] // g'