Linux grep подсчет количества строк

Содержание
  1. grep — поиск в Linux, примеры
  2. 1. Немного про grep
  3. 2. Базовый синтаксис команды grep
  4. 3. Как использовать grep для поиска в файлах
  5. 4. Рекурсивное использование grep
  6. 5. Использование grep для поиска только целых слов
  7. 6. Как искать несколько различных слов
  8. 7. Подсчет количества строк, содержащих вхождение
  9. 8. Инвертный поиск
  10. 9. Как выводить только имена файлов в которых есть включение слова
  11. 10. Поиск всех файлов содержащих слово во всех файлах и поддиректориях
  12. 11. Вывод строк перед и после найденного вхождения
  13. Считать общее количество вхождений с помощью grep
  14. 6 ответов
  15. Подсчитать общее количество вхождений с помощью grep
  16. Узнать количество строк в файле Linux
  17. Подсчет строк, слов и знаков с помощью wc
  18. Подсчёт данных в выводе командной строки Linux
  19. Поиск количества файлов в директории Linux
  20. Подсчет уникальных строк и дубликатов в текстовом файле Linux
  21. Подсчитать количество строк в файле Linux
  22. 📜 Как посчитать строки в файле в UNIX / Linux
  23. Использование команды «wc -l»
  24. Использование команды awk
  25. Использование команды sed
  26. Использование команды grep
  27. Еще несколько команд
  28. Добавить комментарий Отменить ответ
  29. • Свежие записи
  30. • Категории
  31. • itsecforu.ru
  32. • Страны посетителей
  33. IT is good

grep — поиск в Linux, примеры

1. Немного про grep

Команда grep (global regular expression print) остается одной из наиболее универсальных команд в окружении командной строки Linux. Это происходит потому что grep является чрезвычайно мощной утилитой которая дает пользователям возможность сортировать ввод на основе сложных правил, тем самым делая ее популярным связующим звеном в конвейере команд. Grep в основном используется для поиска текста как в данных поступающих на стандартный вход, так и в указанных файлах на предмет строк содержащих указанные слова или подстроки.

2. Базовый синтаксис команды grep

Ниже представлены примеры использования grep с базовым синтаксисом:

3. Как использовать grep для поиска в файлах

Попробуем найти пользователя «vasya» в файле passwd. Для поиска в файле /etc/passwd информации о пользователе «vasya» необходимо использовать следующую команду:

Также мы можем попросить grep осуществлять поиск игнорируя регистр букв, то есть не делая различия между большими и маленькими буквами. Для этого используется параметр -i, как показано ниже:

4. Рекурсивное использование grep

Если у вас есть большое количество текстовых файлов в ряде директорий и поддиректорий, к примеру, конфигурационных файлов apache в /etc/apache2 и требуется найти файл где содержится определенный текст, то стоит использовать параметр -r чтобы осуществить рекурсивный поиск. То есть поиску будет осуществлен по всем файлам в иерархии директорий:

Также можно использовать этот параметр в верхнем регистре. То есть можно писать -R. Разница в том что при использовании -r не происходит обработка символических ссылок, а при использовании -R — происходит. Пример использования:

/etc/apache2/sites-available/debian-help.ru: ServerName debian-help.ru /etc/apache2/sites-available/debian-help.ru: ServerAlias www.debian-help.ru

Как можно видеть результат состоит из имени файла, где была найдена строка и самой строки. Включение в вывод имен файлов можно с легкостью подавить с помощью параметра -h, как показано ниже:

ServerName debian-help.ru ServerAlias www.debian-help.ru

5. Использование grep для поиска только целых слов

Когда вы ищите qwe, grep выберет все вхождения данного сочетания, к примеру, qwerty, qwe123, 345qwerty и множество других комбинаций. Вы можете указать, чтобы grep выбирал только те строки, которые содержат точное включение в виде целого слова. Для этого используйте параметр -w:

6. Как искать несколько различных слов

Для поиска двух или более различных слов вы можете использовать команду egrep следующим образом:

Либо вариант с просто grep:

Читайте также:  Booting windows from usb hard drive

7. Подсчет количества строк, содержащих вхождение

grep может сообщать сколько строк содержат указанное сочетание. Для этого воспользуйтесь параметром -c (count):

В дополнение, можно использовать параметр -n чтобы заставить grep выводить номера строк в файле, в которых было найдено включение:

8. Инвертный поиск

grep позволяет осуществлять поиск наоборот, то есть будут выведены все строки, кроме имеющих вхождение указанного слова и для этого используется параметр -v:

Можно исключить что-либо из вывода поиска применив конвейер:

9. Как выводить только имена файлов в которых есть включение слова

Для вывода только имен файлов нужно использовать параметр -l, к примеру, так:

10. Поиск всех файлов содержащих слово во всех файлах и поддиректориях

Если вам нужно осуществить поиск слова в любых формах во всех файлах в этой директории и всех содержащихся в ней тоже, то используйте сочетание описанных выше параметров:

11. Вывод строк перед и после найденного вхождения

Для вывода нескольких строк перед вхождением используется параметры -A, а после вождения -B.

К примеру, чтобы вывести 5 строк перед и 10 после найденного вхождения используйте команду:

Источник

Считать общее количество вхождений с помощью grep

grep -c полезен для определения количества строк в файле, но он учитывает только каждый раз один раз в строке. Как подсчитать множественные вхождения в строке?

Я ищу что-то более элегантное, чем:

6 ответов

grep’s -o выводит только совпадения, игнорируя строки; wc может подсчитать их:

Это также будет соответствовать «иглам» или «многоуровневому».
Только отдельные слова:

Если у вас есть GNU grep (всегда на Linux и Cygwin, иногда в другом месте), вы можете подсчитать выходные строки из grep -o : grep -o needle | wc -l .

С Perl, вот несколько способов, которые я нахожу более элегантными, чем ваши (даже после того, как он фиксированной ).

При использовании только инструментов POSIX один подход, если это возможно, состоит в том, чтобы разделить входные данные на строки с одним совпадением, прежде чем передавать его в grep. Например, если вы ищете целые слова, сначала переверните каждый символ без слова в новую строку.

В противном случае стандартная команда не будет выполнять этот конкретный бит обработки текста, поэтому вам нужно обратиться к sed (если вы мазохист) или awk.

Вот более простое решение, использующее sed и grep , который работает для строк или даже по отдельности, но не работает в нескольких угловых случаях с привязанными шаблонами ( например, он находит два вхождения ^needle или \bneedle в needleneedle ).

Обратите внимание, что в приведенных выше методах sed я использовал \n для обозначения новой строки. Это стандартно в части шаблона, но в заменяющем тексте, для переносимости, замените обратную косую черту-новую строку для \n .

Другое решение, использующее awk и needle в качестве разделителя полей:

Если вы хотите совместить needle , за которым следует пунктуация, измените разделитель полей соответственно i.e.

Или используйте класс: [^[:alnum:]] , чтобы охватить все неабсолютные символы.

Если, как и я, вы действительно хотели «оба: каждый раз один раз», (это на самом деле «или два раза»), то это просто:

и проверьте вывод 2 .

Преимущество этого подхода (если ровно один раз , что вы хотите) заключается в том, что он легко масштабируется.

В вашем примере выводится только количество вхождений в строке, а не общее количество в файле. Если это то, что вы хотите, что-то вроде этого может работать:

Источник

Подсчитать общее количество вхождений с помощью grep

grep -c полезен для определения количества встреч строк в файле, но он учитывает каждый случай только один раз в строке. Как посчитать несколько вхождений на строку?

Читайте также:  Mac os не отправляет сообщения

Я ищу что-то более элегантное, чем:

grep’s -o будет выводить только совпадения, игнорируя строки; wc можно их посчитать

Это также будет соответствовать «иглам» или «многоигольным иглам».
Только отдельные слова:

Если у вас есть GNU Grep (всегда на Linux и Cygwin, иногда в других местах), вы можете рассчитывать выходные строки из grep -o : grep -o needle | wc -l .

С Perl, вот несколько способов, которые я нахожу более элегантными, чем ваш (даже после исправления ).

При использовании только инструментов POSIX одним из подходов, если это возможно, является разбиение ввода на строки с одним соответствием перед передачей его в grep. Например, если вы ищете целые слова, то сначала превратите каждый несловарный символ в новую строку.

В противном случае, нет стандартной команды для выполнения этой конкретной части обработки текста, поэтому вам нужно переключиться на sed (если вы мазохист) или awk.

Вот более простое решение, использующее sed и grep , которое работает со строками или даже регулярными выражениями, но не работает в нескольких угловых случаях с закрепленными шаблонами (например, оно находит два вхождения ^needle или \bneedle в needleneedle ).

Обратите внимание, что в приведенных выше заменах sed я имел \n в виду перевод строки. Это стандартно в части шаблона, но в тексте замены, для переносимости, используется замена на обратную косую черту для новой строки \n .

Источник

Узнать количество строк в файле Linux

Довольно частенько нужно подсчитать количество файлов при выводе в консоли BASH. Хорошо если файлов 10 единиц. Как быть если их сотни и у каждого файла сложное имя. Тут идеально подойдёт команда wc. Её наилучше использовать вместе с фильтром. Например с командой grep команда wc хорошо сочетается. Возможно подсчитать количество слов в документе.

С помощью команды wc вы можете подсчитать количество строк, слов и символов в указанном файле. Если указано более одного файла в инструктивной строке, то программа wc осуществляет подсчет строк, слов и символов в каждом файле и потом выдает общее число. Вы можете с помощью ключей указать либо подсчет лишь строк, или только слов, или символов. Синтаксис команды:

Подсчет строк, слов и знаков с помощью wc

Система отвечает строкой в следующем формате: l w c файл

где l — число строчек в файле;
w — число слов в файле;
c — число символов в файле.

Чтобы подсчитать количество строк, слов и символов в нескольких файлах, используйте следующий формат:

Система говорит следующим образом:

l w c файл1
l w c файл2
l w c total

Число строк, слов и символов для файл1 и файл2 отражается на отдельных строках. На последней строке отображается общее число строк, слов и знаков в двух файлах.

Подсчет данных в документе

wc text.txt
вывод: 40 149 947 text.txt

В первоначальной колонке содержится количество строк, во второй кол-во слов, в третьей кол-во знаков

wc -l file.txt #вывести количество строк (ряд знаков, написанных или напечатанных в одну линию)
wc -c file.txt #вывести количество байт
wc -m file.txt #вывести число символов
wc -L file.txt #вывести длину самой длинной строки
wc -w file.txt #вывести число слов

Подсчёт данных в выводе командной строки Linux

ls -al | grep ‘.txt’ | wc -l

ls -al | grep ‘.txt’ | wc -w

Подсчет количества .txt-файлов в текущем каталоге с помощью wc:

При выводе в инструктивной строке очень часто попадают файлы с точками вместо имён .. или . .Тут необходимо отфильтровать вывод и только потом применять команду wc. Как подсчитать количество файлов в папки. Тут добавлена сортировка и удаление дублей. uniq — убирает дубли, перед unic обязана идти сортировка sort

Читайте также:  Правильная переустановка mac os

Поиск количества файлов в директории Linux

ls | grep «name» | sort | uniq | wc -l

Подсчет уникальных строк и дубликатов в текстовом файле Linux

Буквально сегодня на работе столкнулся с довольно простой задачей, состоящей из двух подзадач: 1) нужно было подсчитать в текстовом файле количество уникальных строк 2) подсчитать в уже другом файле количество строчек, которые дублируются.

С этими задачами я справился и после этого подумал — по какой причине бы не написать небольшой пост, вдруг кому-нибудь пригодится. Подсчитаем в нём количество уникальных строчек с помощью следующей команды:

$ sort data.txt | uniq -u | wc -l

Всё достаточно просто. Утилита uniq с функцией -u выводит на экран уникальные строки (u—unique, видимо так) и с помощью | результат перенаправляется в утилиту wc , какая просто считает количество строк, т.к. исполняется с опцией -l. В самом начале нам необходимо просортировать входной поток данных (текстовый файл), иначе утилита uniq не сможет правильно подсчитать уникальные строки. Выполняется сортировка с помощью sort и результат, используя |, перенаправляется в uniq. После исполнения такой команды для файла data.txt на экран будет выведено число 5.

Для этого чтобы решить вторую подзадачу, сделаем всё тоже самое, только uniq станет выполнен с опцией -d (видимо d—duplicate):

$ sort data.txt | uniq -d | wc -l

В результате на экран выведено количество 2. Обе подзадачи решены достаточно простым способом. Записал небольшую демонстрацию кому забавно.

Подсчитать количество строк в файле Linux

Нет ничего проще, чем подсчитать количество строчек в файле.

cat filename.txt | wc -l

Подсчитать общее количество строк в файлах (именованная область данных на носителе информации) по шаблону. Если же вам необходимо подсчитать количество строк нескольких файлов, можете использовать шаблон, например:

Источник

📜 Как посчитать строки в файле в UNIX / Linux

Использование команды «wc -l»

Есть несколько способов подсчета строк в файле.

Но один из самых простых и широко используемых способов – использовать «wc -l».

Утилита wc отображает количество строк, слов и байтов, содержащихся в каждом входном файле, или в стандартном вводе (если файл не указан).

Итак, рассмотрим файл, показанный ниже:

Использование команды awk

Если вы хотите использовать awk для определения количества строк, используйте следующую команду awk:

Использование команды sed

Использование команды grep

Наш старый добрый друг “grep” также может быть использован для подсчета количества строк в файле.

Эти примеры показаны только для того, чтобы вы знали, что существует несколько способов подсчета строк без использования “wc -l”.

Но если меня спросят, я всегда буду использовать «wc -l» вместо этих опций, так как это слишком легко запомнить.

В GNU grep вы можете использовать следующий синтаксис grep:

Вот еще одна версия команды grep для поиска количества строк.

Еще несколько команд

Наряду с приведенными выше командами полезно знать некоторые редко используемые команды для поиска количества строк в файле.

1. Используйте команду nl (фильтр нумерации строк), чтобы получить нумерацию каждой строки.

Это не очень точный способ узнать количество строк.

Но вы можете использовать awk или sed для подсчета последней строки.

4. Вы также можете использовать perl, чтобы найти количество строк:

Добавить комментарий Отменить ответ

• Свежие записи

• Категории

• itsecforu.ru

• Страны посетителей

IT is good

Источник

Оцените статью