Скрипт для поиска трех разных пользователей в Интернете и печати

Я пытаюсь создать сценарий, в котором пользователь может ввести 3 разных аргумента (имена пользователей), чтобы узнать, находятся ли они в сети.

В настоящее время у меня есть who | grep "^$1" who | grep "^$1" который вызовет тех, кого обыскали, но когда я пытаюсь добавить $ 2 и $ 3, как

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

он дает ошибку, не говоря о таком файле или каталоге, но он отлично работает, когда у меня есть только один аргумент. Какие-либо предложения?

3 Solutions collect form web for “Скрипт для поиска трех разных пользователей в Интернете и печати”

who | grep -e "^$1" -e "^$2" -e "^$3" who | grep -e "^$1" -e "^$2" -e "^$3" должен делать

Grep ведет себя по-разному в зависимости от типа используемого им механизма регулярного выражения. По умолчанию он использует Basic Regular Expressions, но также может использовать Extended Regular Expressions с -E а в версиях grep , поддерживающих эту функцию, Perl Compatible Regular Expressions с -P .

BRE может искать только два шаблона, не более. Синтаксис:

 grep 'pattern1\|pattern2' 

ERE и PCRE могут искать произвольное число, их синтаксис в этом отношении одинаковый, изменяется только флаг опции:

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

Итак, для вашего случая вы можете сделать что-то вроде:

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

Я бы рекомендовал сделать что-то вроде этого:

 who | awk '{print $1}' 

awk будет печатать первый столбец или имена пользователей, которые в настоящее время вошли в систему.

Как отметил Тердон, чтобы сузить его до трех аргументов:

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

  • Греп странное исключение пустых строк из вывода
  • grep для текста, который может или не может присутствовать
  • Как фильтровать контент между определенными ключевыми словами с помощью grep?
  • поиск и имена эхо-файлов только с найденным шаблоном
  • команда после команды grep не работает
  • Получить команды, которые пользователь может запустить из / etc / sudoers?
  • Grep для строки в файле без использования трубы
  • Как grep для одиночной цитаты?
  • Чтение и добавление в файл одновременно с сохранением конца строки
  • Как найти файлы с определенным подпути?
  • tcpdump не будет захватывать весь пакет
  • Сопоставление двух разных линий, расположенных по крайней мере на N прямых друг от друга
  • Interesting Posts

    Byobu создает бесконечный икру детей byobu-status -> tmux под tmux

    Как поместить определенные файлы из каталога в массив в bash?

    Как я могу сделать блок синтаксического анализа perl более разумным?

    Как установить iwidgets без доступа root и установить окружение

    Почему «процесс backporting не учитывает выпуски в потоке»?

    Установите Linux на USB-накопитель, используя один USB-накопитель

    64-битный Linux или 32-разрядный Linux с ядром PAE заставляет сервер x сбой при загрузке

    Как монтировать NFS 3 тома на Fedora 17?

    ssh вместо SASL для аутентифицированной отправки SMTP?

    добавьте пробел 5 раз в начале каждой строки в текстовом файле

    Почему мои разделы не отображают нужную емкость на 4096-битном физическом блочном жестком диске?

    Применить заданные шаблоны исключения rsync в заданной директории

    bash – источник, не загрязняя собственное пространство имен

    Как переименовать заголовок терминала в терминале gnome?

    Не удается выполнить файл с установленным битом разрешения на выполнение

    Linux и Unix - лучшая ОС в мире.