Как получить только первую строку в строке - PullRequest
0 голосов
/ 30 января 2019

Я пишу скрипт, который проверяет список всех пользователей, подключенных к серверу (используя who) и записывает в файл Information список имен только тех пользователей, которые имеют буквы a, b, c или d.Это то, что у меня есть до сих пор:

 who | grep '[a-d]' >> Information

Однако команда, которая отображает это:

username pts/148      2019-01-29 16:09 (IP address)

Что я не понимаю, так это то, что мой поиск grep также отображает очки/ 148, дата, время и IP-адрес.Я просто хочу отправить имя пользователя в файл Информация.

Любая помощь приветствуется.

Ответы [ 3 ]

0 голосов
/ 30 января 2019

Другой способ - использовать команду cut, чтобы получить только первую часть строки.

1005 *
0 голосов
/ 30 января 2019

Использование awk для вывода записей, в которых совпадает первый столбец [a-d]:

$ who | awk '$1~/[a-d]/' >> Information

Использование grep для поиска строк с [a-d] перед первым пробелом:

$ who | grep -o "^[^ ]*[a-d][^ ]*" >> Information
0 голосов
/ 30 января 2019

Вам нужно получить первое слово, в противном случае grep будет отображать всю строку с соответствующим текстом.Вы можете использовать awk:

who | awk '{ if (substr($1,1,1) ~ /^[a-d]/ ) print $1 }' >>Information
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...