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

У меня много (т. Е. >> 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 

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

  • Получить каждый столбец, который содержит несколько пробелов?
  • Запустить 4 программы при запуске в Linux Mint через терминал
  • статистика не работает с пробелами?
  • bash + с помощью printf для печати в специальном формате
  • ошибка: у Macro% есть незаконное имя (% define)
  • awk не производит желаемый выход
    • comm – может сравнивать только два файла одновременно; выбрасывает строки, которые не отображаются в обоих файлах
    • grep -f – отбрасывает строки, которые не совпадают
    • grep -c – подсчитывает совпадения, но выводит общее количество на файл и отбрасывает информацию о том, какие шаблоны ввода совпадают

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

  • Есть ли способ получить эффект объединения grep -v с grep -A?
  • Команда Ubuntu runuser?
  • Использование команды `select` для печати меню в Linux
  • Как я могу установить переменную среды постоянно через сценарий оболочки?
  • Как рассчитать сумму данных, имеющих один и тот же идентификатор в первом столбце?
  • Отображать интеграл в научной нотации?
  • 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 – убедиться, что каждая строка подсчитывается только один раз для каждого файла. Точка остальной части конвейера должна подсчитывать события.

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