Intereting Posts
Удаление определенных страниц PDF в зависимости от содержимого Есть ли способ выйти из режима «меньше», не останавливая другие процессы в трубе? Экран замораживания и звука во время просмотра видео изменить права доступа к домашней папке при выходе / отключении не может получить доступ к rpmfusion.org через HTTPS Запустите chkdsk из гостевой ОС Windows на Qemu на жесткий диск в хосте «Ошибка: нет такого устройства» при загрузке в Ubuntu Server 11.10 с Raid1 Почему я не могу написать мой раздел ext4 даже с 777 переменами? Как я могу подсчитать количество раз, когда фраза появляется в файле и форматировать ее аккуратно? Не удается удалить сломанную символическую ссылку Найти команду, связанную с файлом конфигурации Как настроить пароль без ssh с ключами RSA Вивадо и значение $ DISPLAY Перезаписать файл и применить права файловой системы для перезаписанных файлов? Арифметические операции над конкретным столбцом CSV-файла в Bash

Как распечатать только первый матч с помощью grep

Я пытаюсь grep username:

users | grep "^\b\w*\b" -P 

Как я могу заставить его показывать только первый матч с grep ?

Если вы действительно хотите вернуть только первое слово и хотите сделать это с помощью grep и ваш grep окажется последней версией GNU grep , вам, вероятно, понадобится опция -o . Я считаю, что вы можете сделать это без использования -P и \b в начале, на самом деле не нужно. Следовательно: users | grep -o "^\w*\b" users | grep -o "^\w*\b" .

Тем не менее, как упоминалось в @manatwork, оболочка, встроенная в read или cut / sed / awk кажется более подходящей (особенно, когда вы дойдете до точки, вам нужно будет сделать что-то еще).

Чтобы показать только первое совпадение с grep , используйте параметр -m , например:

 grep -m1 pattern file 

-m num , --max-count=num

Прекратите чтение файла после нескольких совпадений.

Почему grep ? Команда grep предназначена для поиска. Кажется, вам нужно либо cut либо awk , но чтение встроенного также кажется подходящим.

Сравните их:

 users | cut -d' ' -f1 users | sed 's/\s.*//' users | awk '$0=$1' 

Если вы хотите сохранить его в переменной, используя bash:

 read myVar blah < <(users) 

или:

 read myVar blah <<< $(users). 

Вышеуказанный ответ основан на комментариях @manatwork .