найти только первое появление, используя только grep

Предположим, у меня есть файл со многими словами, я хочу найти только первое слово с шаблоном «xyz». Как это сделать, если в этой строке есть несколько слов с этим шаблоном? -m возвращает все слова в первой строке, в которой он совпадает. Мне нужна только команда grep.

2 Solutions collect form web for “найти только первое появление, используя только grep”

По умолчанию grep печатает строки, соответствующие шаблону, поэтому, если шаблон появляется один или несколько раз в строке, grep будет печатать эту целую строку.

Добавление флага -m 7 покажет grep для печати только первых 7 строк, где отображается шаблон.

Так что это должно делать то, что вы хотите (я его не тестировал):

 grep -o -m 1 xyz myfile | head -1 

Edit: как указано в @ Kusalananda, вам не нужен флаг -m но с его помощью grep не нужно разбирать весь файл и будет выводить результат быстрее, особенно если myfile – это большой файл.

Ответ на ваш вопрос находится на странице grep man:

$ grep -m1 'searchstring' имя_файла

Параметр -m является ключом.-M1 отображает только первое совпадение, -m 2 первые 2 вхождения и так далее.

Я надеюсь, это поможет вам.

  • Как получить количество ссылок на файлы в папке с этими ссылками?
  • Удалить длинную строку из файлов
  • Получить строку между двумя строками
  • Grep / awk для нескольких файлов для одного вывода
  • извлечение из строки в строку, а затем сохранение в отдельный файл
  • Поиск в определенном столбце для шаблона и вывода всей строки
  • Почему grep показывает разные результаты, когда я использую file1 как шаблон в файле2 и наоборот?
  • BASH: как Grep и отображает набор значений
  • необязательный текст переменной длины grep
  • Почему grep не показывает мне подходящее слово до следующего пробела?
  • Использование команды grep и обратного вызова
  • Удалить слово после матча
  • Linux и Unix - лучшая ОС в мире.