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

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

  • Выполнение точного моментального снимка и инкрементного резервного копирования на удаленный сервер
  • Существует ли привязка ключа к переключению на «последнее» рабочее пространство в mint 17.2?
  • Ubuntu & Linux Mint: драйверы нескольких графических карт
  • Перенаправление grep в файл не работает
  • Установка несанкционированной Wi-Fi-карты в краю Lenovo Thinkpad 14
  • Можно ли настроить приложения для использования разных сетевых интерфейсов по-разному? Если да, то как?
  • Незначительная проблема рендеринга шрифтов в Linux Mint 18.1 (Cinnamon)
  • Рекурсивно найти файлы, которые имеют процент общих линий
  • 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 - лучшая ОС в мире.