我需要一些帮助才能完成一些代码。我想使用who
命令进行查询,但我只想查看列出的用户,我在参数中提供了用户名和pts / num ,按登录时间排序。它适用于1个用户,但我想让更多用户使用它。这是atm:
#!/bin/bash
who |
awk '($1 ~ /'$*'/){print $3 $4" "$1" "$2}' |
sort -n |
awk '{ print $2, $3 }'
如何让它与多个用户一起使用?
样品使用:
./script username1 username2 blabla pete stevie
答案 0 :(得分:1)
如果我告诉你正确而不是:
$ who
oxo tty7 2014-05-12 14:32 (:0)
bar pts/5 2014-05-12 18:35 (:0:S.1)
oxo pts/1 2014-05-13 13:29 (:0:S.5)
baz pts/8 2014-05-12 18:35 (:0:S.2)
oxo pts/12 2014-05-12 18:35 (:0:S.3)
oxo pts/13 2014-05-12 18:35 (:0:S.4)
foo pts/15 2014-05-12 18:35 (:0:S.0)
bar pts/17 2014-05-13 19:36 (:0:S.6)
bar pts/18 2014-05-14 00:03 (:0:S.7)
你希望得到例如:
$ ./who.sh foo bar
bar pts/5
foo pts/15
bar pts/17
bar pts/18
如果是这样,那对你有用:
#!/bin/bash
users=`echo $@|tr " " "|"`
who|sort -k 3|awk -v users="$users" '$1 ~ users {print $1" "$2}'
实际上可以在awk
中完成tr
或sort
,但我希望它足够好。
<强>更新强>
要摆脱tr
,可以使用:
#!/bin/bash
who|sort -k 3|awk -v users="$*" 'BEGIN { regex = gensub(/\s/, "|" ,"g", users) }; $1 ~ regex { print $1" "$2 }'
您可以使用asorti()
替换sort
。