У меня очень длинный файл журнала, можно ли попросить grep искать только первые 10 строк?Могу ли я grep только первые n строк файла?
ответ
Магия труб;
head -10 log.txt | grep <whatever>
У вас есть несколько вариантов использования программ вместе с grep
. Самый простой на мой взгляд, использовать head
:
head -n10 filename | grep ...
head
будет выводить первые 10 строк (с помощью опции -n
), а затем вы можете трубы, что выход на grep
.
Я даже не понял, все решения здесь, используя 'head' использовали' -n 10' ** (включая меня) ** не понимая, что 'head' by ** default ** отображает *** только 10 строк ***. :) –
Oh _goodness_ это правильно ... –
Выход head -10 file
может быть передан в grep
для того, чтобы достичь этого:
head -10 file | grep …
Использование Perl:
perl -ne 'last if $. > 10; print if /pattern/' file
Вы можете использовать следующую строку:
head -n 10 /path/to/file | grep [...]
Или использовать awk
для одного процесса без |
:
awk '/your_regexp/ && NR < 11' INPUTFILE
В каждой строке, если это your_regexp
матчей, и количество записей (строк) меньше, чем 11, он выполняет действие по умолчанию (который печатает ввод линия).
Или используйте sed
:
sed -n '/your_regexp/p;10q' INPUTFILE
проверяет регулярное выражение и выводит строку (-n
средства не выводятся на печать вход, который в противном случае по умолчанию), и завершает работу сразу после 10-й линии.
Почему бы не выйти на 10-й? (см. решение sed) – potong
'awk '{if (NR <= 10) {if (index ($ 0," ab ")> 0) {print $ 0; }} else {exit; }} 'textfile' - быстрее. –
@potong вы правы, исправлены. @srikanthradix, в то время как это может быть быстрее, вы решили не искать регулярные выражения, а только для фиксированных строк. 'awk '{if (NR <= 10) {if ($ 0 ~" YOUR_REGEXP ") {print}} else {exit; }} 'textfile' делает. –
grep "pattern" <(head -n 10 filename)
Для людей, которые находят это на Google, мне нужно искать первые n
линии нескольких файлов, но только напечатать совпадающие имена файлов. Я использовал
gawk 'FNR>10 {nextfile} /pattern/ { print FILENAME ; nextfile }' filenames
The FNR..nextfile
прекращает обработку файла один раз 10 линий было видно. //..{}
печатает имя файла и перемещается при каждом появлении первого совпадения в заданном файле. Цитирую имена файлов в пользу других программ, используйте
gawk 'FNR>10 {nextfile} /pattern/ { print "\"" FILENAME "\"" ; nextfile }' filenames
Я был одним из тех людей, которые нашли это в Google. Благодаря! – Floris
для меня, этот код напечатал полный путь к файлу. Это именно то, что мне нужно. Также 'FNR = 1' будет просто искать 1-ю строку. Благодаря! –
Grep -A 10 <Pattern>
Это, чтобы захватить образец и следующие 10 строк по образцу. Это будет хорошо работать только для известного шаблона, если у вас нет известного шаблона, используйте «главные» предложения.
Хотя это может быть правильно. добавьте больше описания вопроса, чтобы сделать ответ более полным. –
head -10 log.txt | grep -A 2 -B 2 pattern_to_search
head -10 log.txt: прочитайте первые 10 строк файла.
-A 2: распечатать две строки перед рисунком.
-B 2: печать двух строк после рисунка.
У меня была аналогичная проблема, и все вышеперечисленные проблемы не решают ее полностью. Я также заинтересован в получении имени файла, содержащего соответствующие строки. Мое решение:
ls |parallel --gnu 'cat <(echo {}) <(head {})|grep -B1 -m1 -P "^>.*F3$"'
N.B: Узор в моем случае всегда совпадает с первой строки.
Расширение ответа Йоахима Исакссона: Довольно часто мне нужно что-то из середины длинного файла, например. линии 5001 до 5020, в этом случае вы можете объединить head
с tail
:
head -5020 file.txt | tail -20 | grep x
Это получает первые 5020 строк, а затем показывает только последние 20 из них, а затем трубы все к Grep.
(Отредактировано: fencepost ошибка в моем примере чисел, добавил трубу Grep)
- 1. Как просмотреть только первые n строк файла?
- 2. Извлечь только первые N строк трассировки стека
- 3. grep first n rows, только имя возвращаемого файла
- 4. Нужно удалить первые N строк файлов результатов grep
- 5. Могу ли я ограничить таблицу mysql, содержащую только n строк?
- 6. Сортировать только первые 100 строк файла
- 7. Haskell читает первые n строк
- 8. Запретить прокручивать первые n строк
- 9. Как я могу позволить grep сканировать только первые 12 символов в имени файла?
- 10. Как я могу наиболее эффективно прочитать первые n строк большого текстового файла в php?
- 11. Показать только первые N строк вывода SQL-запроса
- 12. Удалите первые N строк файла в командной строке unix
- 13. Grep из нескольких файлов и получить первые n строк каждого вывода
- 14. tidyr отдельно только первые n экземпляров
- 15. Как выбрать первые N строк каждой группы?
- 16. Как я могу заставить свой скрипт bash удалить первые n и последние n строк из переменной? `
- 17. Как удалить первые n строк в области
- 18. html5 fileReader - как читать только первые N символов файла?
- 19. показать n строк после поиска grep
- 20. Показывать только n-го совпадения по grep
- 21. В Firebird, как собрать первые N строк?
- 22. Выбрать первые N строк Кассандры таблицы
- 23. data.table - выберите первые n строк в группе
- 24. Могу ли я получить только часть строки, совпадающую с Grep
- 25. Pandas Groupy берут только первые N групп
- 26. aiohttp скачать только первые n-байты тела
- 27. grep n строк из файла с n извлекается из того же файла
- 28. Получите только первые результаты N в SAXParser
- 29. Прочитайте только первые несколько строк текста из файла
- 30. Как я могу прокручивать первые «n» строки в виде сетки.
вы также можете передать произвольный поток в 'head':' someCmd | head -10 ' –
Головка по умолчанию печатает первые 10 строк до стандартного вывода, поэтому это допустимо для 10 строк' head log.txt | grep ' –
Zlemini
Есть ли способ сделать это при использовании опции' -l' grep? Я хотел бы перечислить все файлы, у которых первые 5 символов являются «RIFFD». –