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

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

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

решение1

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

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

Итак, это должно сделать то, что вам нужно (я не проверял):

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

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

решение2

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

grep -m1 'searchstring' file_name

Параметр -m<number>является ключевым. -m1покажет только первое совпадение, -m2первые 2 вхождения и т. д.

Связанный контент