我有一篇大约 100,000 字的论文,用乳胶排版。我对某些词的连字符连字符相当不一致,例如“蜘蛛恐惧”和“蜘蛛恐惧”。
我想获得 tex 文件中所有带连字符的单词列表(连同计数),然后我还想计算未连字符版本也出现的次数。
大概是使用 awk、grep 或 sed 之类的工具?
您可以通过一个漂亮的 Perl 程序 texcount.pl 来完成此操作,您可以从此网页下载该程序。该程序对 TeX 文档(或字母、数学公式等)中的单词进行计数,这是一项艰巨的任务,因为存在特定于 TeX 的关键字,这些关键字将被排除在计数之外。该程序有许多功能和选项(但我从未使用过),但您需要的是:
texcount.pl -freq myfile.tex
Run Code Online (Sandbox Code Playgroud)
这将返回所用单词的完整列表(到标准输出)及其出现频率。然后,您可以轻松地解析它,以查看何时使用了连字符或非连字符的组合。请注意,该程序可以轻松包含多文件项目,其中章节、附录、参考书目等存储在不同的文件中。然而,它不会(或者至少据我所知)指出单词的精确位置:你必须一一地寻找它们。
编辑:
查找所有出现的非连字符表达式的快速但部分解决方案如下:
grep 'spider *fear' file.tex -n
Run Code Online (Sandbox Code Playgroud)
它搜索由零个或多个(* 符号)空格分隔的两个单词,并返回出现该情况的行号(-n 选项)。这很快,但并不完整,因为使用 grep 会自动意味着当表达式spider fear被分成两行或更多行时,人们无法找到它们。由于对于任意表达,这种情况甚至可能发生在单词中,因此找到这些事件将需要比我愿意做的更多的工作。
编辑2:
解决方案的另一部分如下:
grep 'spider *$' -A 1 filename | grep '^ *fear' -n
Run Code Online (Sandbox Code Playgroud)
这将搜索所有以spider未指定数量的空格结尾的行,后跟以未指定数量的空格开头的另一行,然后是单词“fear”。这样做时,它还将输出该事件的行号。
请记住,在前面的所有情况下,您仅搜索小写表达式。如果您希望包含大写字母,只需grep -i替换grep。
现在唯一缺少的部分是当单词在不同的行之间断开时,例如
spi
der
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
305 次 |
| 最近记录: |