Проверить количество слов в файле, содержащем конкретную букву

Bash для проверки количества слов в файле, который содержит букву "a"

5 Solutions collect form web for “Проверить количество слов в файле, содержащем конкретную букву”

Предположим, что у нас есть этот тестовый файл:

$ cat file the cat in the hat the quick brown dog jack splat 

С реализациями grep , которые приняли расширение GNU -o , мы можем получить все слова, содержащие:

 $ grep -wo '[[:alnum:]]*a[[:alnum:]]*' file cat hat jack splat 

Мы можем считать эти слова:

 $ grep -wo '[[:alnum:]]*a[[:alnum:]]*' file | wc -l 4 

POSIXly:

 <file tr -s '[:space:]' '[\n*]' | grep -ca 

Здесь слова – это последовательности символов без пробелов.

Вот путь Perl:

  perl -0lnE 'say scalar grep(/a/,split(/\s/,$_));' file 

И awk образом:

  awk '{for(i=1;i<=NF;i++){if($(i)~/a/){k++}}}END{print k}' file 

С GNU grep:

  grep -oP '\b\w*a+\w*\b' file 
 awk 'BEGIN{RS="[[:space:][:punct:]]"; c=0} index($0,"a"){c++} END{print c}' 

Использование версии awk , поддерживающей многосимвольный R ecord S eparator ( RS ), например. GNU awk, вы можете заставить awk читать одно слово на запись.

Внутри этой записи функция index(in, string) выполняет поиск для первого вхождения string и возвращает позицию символа на основе 1, где она найдена. Если не найден, index() возвращает 0 . Таким образом, возвращаемое значение можно рассматривать как тест булевого условия (0 = false, а не нуль = истина). Обратите внимание: это не поиск регулярного выражения.

Если совпадение найдено, переменная c увеличивается на 1 ( c++ )

В блоке BEGIN{} требуется c=0 , поскольку c никогда не увеличивается на инкремент – это приведет к тому, что c будет null а не 0 . Другой способ справиться с этой проблемой – print 0+c (в блоке END{} )

  • Как проверить, присутствует ли какой-либо IP-адрес в файле с использованием сценариев оболочки?
  • Как правильно запустить и остановить сценарий оболочки в linux, busybox?
  • Автоматически определять, когда файл достиг предела размера
  • Создайте файл журнала с тем же именем, что и входной файл
  • Как суммировать значения столбцов для каждой строки в двух файлах csv с помощью сценария bash?
  • Объединять записи в зависимости от общих столбцов и указывать значения, которые являются необычными в последнем столбце как разделенные запятыми
  • Unix: C-shell: проверка дискового пространства в Hp-UX
  • что означает $ * в shell
  • Портативный способ получить абсолютный путь скрипта?
  • Определите количество уникальных значений, а затем количество вхождений этих значений в файл
  • Удалите только одно слово перед совпадением шаблона в сценарии оболочки
  • Сценарий оболочки для установки пароля для пользователя samba
  • Linux и Unix - лучшая ОС в мире.