Script para procurar 3 usuários diferentes online e imprimi-los

Script para procurar 3 usuários diferentes online e imprimi-los

Estou tentando criar um script onde um usuário pode inserir três argumentos diferentes (nomes de usuário) para ver se está online.

Atualmente, tenho who | grep "^$1"o que exibirá quem for pesquisado, mas quando tento adicionar $ 2 e $ 3, como

who | grep "^$1" "^$2" "^$3"

ocorre um erro dizendo que esse arquivo ou diretório não existe, mas funciona bem quando tenho apenas um único argumento. Alguma sugestão?

Responder1

who | grep -e "^$1" -e "^$2" -e "^$3"deveria fazer

Responder2

O Grep se comporta de maneira diferente dependendo do tipo de mecanismo de expressão regular que está usando. Por padrão ele usaExpressões regulares básicasmas também pode usarExpressões regulares estendidascom -Ee, em grepversões que suportam esse recurso, Expressões regulares compatíveis com Perlcom -P.

O BRE só pode procurar dois padrões, nada mais. A sintaxe é:

grep 'pattern1\|pattern2'

ERE e PCRE podem procurar um número arbitrário, sua sintaxe é a mesma nesse aspecto, apenas o sinalizador de opção muda:

grep -E 'pattern1|pattern2|pattern3|patternN'
grep -P 'pattern1|pattern2|pattern3|patternN'

Então, para o seu caso, você poderia fazer algo como:

who | grep -E "^$1|^$2|^$3"

Responder3

Eu recomendo fazer algo assim:

who | awk '{print $1}'

awk imprimirá a primeira coluna ou os nomes dos usuários conectados no momento.

Como Terdon apontou, para restringi-lo ainda mais a três argumentos:

who | awk -v one=$1 -v two=$2 -v three=$3 '$1==one||$1==two||$1==three'

informação relacionada