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

У меня уже есть аналогичный вопрос, но у меня есть небольшая разница. Я хочу посмотреть, сколько файлов содержит каждое слово. Когда файл имеет слово, он увеличивает счетчик и затем переходит к следующему файлу. Я не хочу знать, сколько раз слово появляется в каждом файле или имя файла, в котором он появляется, а просто счетчик, указывающий, сколько файлов это слово найдено в моих файлах. Например: у меня есть каталог с 10 файлами, каждый файл является рецептом, и я хочу посмотреть, сколько файлов содержит слово «соль». После выполнения команды он выдаст что-то вроде: 9 Salt . Это было обнаружено в 9 из 10 файлов. Я хочу это для каждого слова. Пока у меня это:

grep -l *| tr '[AZ]' '[az]' | tr -d '[:punct:]' | tr ' ' '\n' | sort | uniq | wc -l 

Буду признателен за любую оказанную помощь.

2 Solutions collect form web for “Команда, чтобы увидеть, находится ли слово в списке файлов и выводит, сколько файлов оно находится в”

Допустим, вы создали папку рецептов в / home / username / recipes

Вот простой скрипт:

 #!/bin/bash count=0 dir=/home/username/recipes/ for recipe in $(ls $dir); do if [ $(cat $HOME/recipes/$recipe | grep $1) ]; then ((count++)) fi done echo "$count $1" 

После того, как вы сохранили файл, вы должны сделать его исполняемым. Сделайте это с помощью:

 chmod 740 script.sh 

Когда вы запустите его, включите аргумент, который вы ищете, например:

 ./script.sh salt 

Если он совпадает в двух файлах, он будет выводить:

 2 salt 

Если он совпадает в трех файлах, он будет выводить:

 3 salt 

и т.п.

Использовать grep -c

Например

 kaustubh@hacked:~/test$ cat a salt salt salt salt salt kaustubh@hacked:~/test$ cat b here sis salt their is salt and everywhere is salt kaustubh@hacked:~/test$ cat c salt hash hash salt sweet salt kaustubh@hacked:~/test$ cat d this is line salt 

Теперь я хочу, чтобы количество salt в файлах: grep -c salt *

 kaustubh@hacked:~/test$ grep -c salt * a:5 b:3 c:3 d:1 
  • Извлечение строк между специальными символами
  • Bash - Разбить предыдущие параметры команд
  • ksh / bash Форматирование файлов через sed по файлу cat | команда sed
  • sed: многострочная замена блока конфигурации
  • Разбор строк файла данных с помощью разделителя Вместо EOL
  • Solaris использует генератор последовательности в начале каждой новой строки
  • Удалить до первого вхождения, отредактировать эту строку и распечатать оставшиеся строки без изменений
  • Получите первое соответствие шаблону в строке, не использующей разрез
  • Как изменить все строки в файле python от snake_case до camelCase в sed
  • Как удалить команды в истории, соответствующие заданной строке?
  • sed: захват и замена всех данных между последней обратной косой чертой и запятой
  • array выводит все испорченные?
  • Interesting Posts

    Дробная файловая система Drobo игнорирует / etc / fstab, автоматически отключается после того, как соединение прерывается

    Где Nautilus / Gnome отслеживает или регистрирует активность пользователя?

    Какие оптимизированные инструменты доступны для сравнения содержимого каталога?

    Поиск всех больших файлов в корневой файловой системе

    mv to nfs "не может создать обычный файл … файл существует", но создает пустой файл

    изменить режим входа в систему centos 6.5

    Как контролировать длину цикла команды «сверху»

    bash_history: комментировать опасные команды: `#`

    Замена нескольких строк в sed или awk

    Как добавить пару ключей (общедоступный и закрытый) в список базы данных ядра, в которой содержится список доверенных ключей

    В чем разница между echo `date`, echo" date "и echo '' date`?

    Почему у людей страниц нет примеров?

    Is / sbin / sulogin безопасен?

    Как узнать последнее воскресенье месяца

    VirtualBox с aMule – Как настроить сеть, переадресацию портов … правильно?

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