Ищите английское слово в файле через терминал

Как найти и распечатать английские слова, содержащиеся в файле, через командную строку linux?

  • Выполнить команды Lua в Awesome window manager
  • Создание доступного планшета Linux
  • как найти файл, определяющий псевдоним
  • Почему Ctrl + R ничего не делает в терминале Ubuntu?
  • Поделиться домашним каталогом между Arch и Ubuntu
  • Запрос: строка удаляется путем переключения команд
  • Не удалось заблокировать попытки входа в сервер после настройки fail2ban
  • Как заставить MoveToTrash означать «Удалить постоянно» одним слоем?
  • Два контейнера LXC с использованием двух разных физических сетевых интерфейсов
  • Вызов PolicyKit / polkit через xinit / startx?
  • Простая система и резервное копирование / восстановление файлов для Linux?
  • ajaxterm с использованием пропорционального шрифта
  • 4 Solutions collect form web for “Ищите английское слово в файле через терминал”

    GNU grep имеет следующие параметры:

    grep --only-matching --ignore-case --fixed-strings --file /usr/share/dict/british-english-insane /path/to/file.txt 

    Это выводит строки, найденные по одной строке. Здесь /usr/share/dict/british-english-insane – это список слов, предоставленный пакетом Debian wbritish-insane .

    Он, смешно!

     file=/usr/share/licenses/common/GPL3/license.txt dict=/usr/share/dict/cracklib-small while read word; do grep >/dev/null -i "\<$word\>" $file && printf 'Word "%s" found in GPLv3...\n' $word done < $dict 

    Вывод :

     Word a found in GPLv3... Word ability found in GPLv3... Word about found in GPLv3... (...) 

    Файл cracklib-small поставляется с пакетом cracklib http://sourceforge.net/projects/cracklib

    Решение на основе grep обычно будет довольно медленным, особенно с большими списками слов.

    Вы можете воспользоваться тем фактом, что списки слов уже отсортированы (однако в моей системе кажется, что по крайней мере британско-английский язык был отсортирован в POSIX / C, хотя кодировка UTF-8):

     tr -cs "[:alpha:]'" '[\n*]' < /etc/passwd | LC_ALL=C sort -u | LC_ALL=C comm -12 - /usr/share/dict/british-english-insane 

    Вы также можете предварительно перевести все строчные или прописные слова заранее, если хотите искать слова без учета регистра.

     file=/usr/lib/python2.6/LICENSE.txt dict=/usr/share/dict/british-english-huge # or any suitable list sort "$dict" \ <(sed "s/[].,\"?!;:#$%&()*+<>=@\^_{}|~[]\+/\n/g # keep ' for now s|[-/[[:digit:][:blank:][:cntrl:]]\+|\n|g s/\<'\+/\n/; s/'\>\+/\n/ # remove ' " <(<"$file" tr '[:upper:]' '[:lower:]') ) | uniq -c | awk '$1 > +1 {print $2}' 

    найдено 382 слова (без учета регистра) во времени:

     real 0m1.723s user 0m1.872s sys 0m0.048s 
    Linux и Unix - лучшая ОС в мире.