0

我想找出当前登录用户使用的 DISPLAY。为此,我想使用sed. 首先,输出who

[orschiro@thinkpad ~]$ 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

我正在使用以下表达式,但它没有检索到预期的结果。相反,输出为空:

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

我的表达有什么问题?

4

3 回答 3

4

命令/pts/d;删除所有包含字符串的行pts。尝试这个:

who | sed -e '/orschiro/! d; /pts/! d; s/^.*\(:[0-9.]\+\).*$/\1/p;d' | head -n1
于 2013-08-05T21:55:36.490 回答
2

也许这个?

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

或者

who | awk -F '[()]' '/orschiro/{print $(NF-1)}' | grep -v orschiro | uniq
于 2013-08-05T22:07:12.970 回答
1

试试这个:
谁| awk '/orschiro/{打印 $5}' | sed -e 's/[()]//g'

于 2013-08-06T07:30:35.613 回答