Isso cheira a lição de casa, mas tudo bem:
#!/bin/bash
users=$(users | xargs -n1 | sort -u)
for u in $users; do
w -h | awk '{print $1 " " $3}' | grep -m1 $u
done
Explicação:
Primeiramente, criamos uma lista de usuários logados com o comando "user" e filtramos os duplicados, colocando um em cada linha (xargs -n) e classificando com os únicos filtrados (sort -u).
w -h imprime uma lista de todos os usuários logados, nós mandamos que através do awk imprima apenas os campos desejados (1 e 3), canalizando o resultado através do grep para filtrar todos, exceto o usuário que estamos procurando em cada loop iteração. -m1 garante que pare após a primeira partida, você também pode canalizar através da 'cabeça -1'.