6

У меня есть тезис около 100 000 слов, набранных в латексе. Я довольно непоследовательно записал некоторые слова, например "страх перед пауком" и "страх перед пауком".

Я хотел бы получить список всех слов в текстовых файлах, которые пишутся через дефис (вместе с подсчетом), а затем я также хотел бы подсчитать количество раз, когда также появляется несотворенная версия.

Предположительно с помощью такого инструмента, как awk, grep или sed?

1 ответ1

3

Вы можете сделать это с помощью элегантной Perl-программы texcount.pl, которую вы можете загрузить с этой веб-страницы. Эта программа считает слова в документах TeX (или в письмах, или в математических формулах, ...), нетривиальная задача, учитывая наличие ключевых слов, специфичных для TeX, которые должны быть исключены из подсчета. Программа имеет ряд функций и опций (которые я никогда не использовал), но вам нужно:

   texcount.pl -freq myfile.tex

который вернет полный список использованных слов (к стандартному выводу) с частотой их появления. Затем вы можете легко разобрать это, чтобы увидеть, когда вы использовали дефисные или не дефисные комбинации. Обратите внимание, что программа может легко включать многофайловые проекты, где разделы, приложения, библиография и т.д. Хранятся в разных файлах. Однако он не будет (или, по крайней мере, AFAIK) указывать на точное местоположение слов: вам придется выследить их один за другим.

Редактировать:

Быстрое, но частичное решение для поиска всех вхождений без дефисов выражений заключается в следующем:

  grep 'spider *fear' file.tex -n

который ищет два слова, разделенные пробелом ноль или более (символ *), и возвращает номер строки (опция -n) этого вхождения. Это быстро, но не полностью, потому что использование grep автоматически подразумевает, что нельзя найти выражение « spider fear когда они разбиты на две или более строки. Поскольку для произвольных выражений это может происходить даже в словах, обнаружение этих случаев потребует чуть больше работы, чем я готов сделать.

Изменить 2:

Другое решение состоит в следующем:

   grep 'spider *$'  -A 1 filename | grep '^ *fear' -n

Это будет искать все строки, которые заканчиваются spider за которым следует неопределенное количество пробелов, затем следует другая строка, начинающаяся с неопределенного количества пробелов, а затем слово «страх». При этом он также выведет номер строки этого вхождения.

Помните, что во всех предыдущих случаях вы ищете только строчные выражения. Если вы хотите включить заглавные буквы, просто замените grep -i на grep .

Единственная часть, которая отсутствует сейчас, это когда слова разбиваются между разными строками, как в

    spi
    der

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .