Как я могу подсчитать частоту строк среди многих файлов?

У меня много (т. Е. >> 2) текстовых файлов. Эти файлы в основном похожи, но имеют небольшие различия между ними. Я хотел бы найти строки, которые чаще всего появляются среди этих файлов. Например, вот тип информации, которую я ищу (я только забочусь о данных, никоим образом не требуется какое-либо конкретное форматирование):

$ cat file1 line1line1line1 line2line2line2 line3line3line3 $ cat file2 line1line1line1 line2line2line2 $ cat file3 line1line1line1 line3line3line3 $ cat file4 line4line4line4 $ my_awesome_script file{1,2,3,4} count | line ------+---------------- 3 | line1line1line1 2 | line2line2line2 2 | line3line3line3 1 | line4line4line4 

Существуют некоторые общие инструменты для выполнения подобных задач, однако они имеют некоторые ограничения:

  • comm – может сравнивать только два файла одновременно; выбрасывает строки, которые не отображаются в обоих файлах
  • grep -f – отбрасывает строки, которые не совпадают
  • grep -c – подсчитывает совпадения, но выводит общее количество на файл и отбрасывает информацию о том, какие шаблоны ввода совпадают

Для разъяснения, если строка появляется несколько раз в одном файле, я считаю это только одним совпадением. Мне просто интересно, сколько файлов появляются в строках, а не сколько раз строк отображаются в целом.

  • Что вы используете параметр -t "tag" для журнала?
  • Проверить, если $ 1 ИЛИ $ 2 равны нулю с "-z" - BASH
  • Вопрос о структуре и циклах
  • Запускать while в сценарии systemd
  • Запуск исполняемого файла с помощью скрипта оболочки
  • Удалить сценарий научной нотации bash
  • как извлечь путь из местоположения файла с помощью оболочки
  • Позиция курсора в vi при открытии файла
  • One Solution collect form web for “Как я могу подсчитать частоту строк среди многих файлов?”

    Что-то вроде этого должно делать то, что вы хотите:

     #! /bin/sh for f in ./file*; do sort -u "$f" done | \ sort | \ uniq -c | \ sort -rn | \ head -40 

    Точка for – убедиться, что каждая строка подсчитывается только один раз для каждого файла. Точка остальной части конвейера должна подсчитывать события.

    Interesting Posts

    альтернативы обновления имеют две записи: одну в авто и другую в ручном режиме

    Как Fstab выполняет noexec параметр влияет на акции samba

    Почему Ubuntu рекомендует загрузить 32-битную версию?

    Как я могу автоматически найти окно моего клиента в Интернете?

    Создание домашнего файлового сервера с использованием Arch Linux

    Как читать только вторую последнюю строку файла

    Запуск сценария для настройки конфигурации монитора

    Bash (Git) – файлы функций, псевдонима и SH

    Убить процесс вместо паники на hung_task

    Как установить umask так, чтобы каталоги были `rx` и файлы` “

    Как отсортировать список файлов по времени, учитывая только имена файлов

    Как найти буфер обмена по умолчанию в debian-mate?

    Как я могу остановить свой рабочий стол Cinnamon от Debian всегда, начиная с раскладки английской клавиатуры США?

    Использование графического процессора для каждого пользователя на машине Linux (CUDA)

    перенаправление std-вывода и std-ошибки

    Linux и Unix - лучшая ОС в мире.