如何使用 Unix 命令收集文本文件中的字符使用统计信息?
我有一个使用 OCR 软件创建的文本文件 - 大小约为 1 兆字节。 文档中到处都出现一些不常见的字符,其中大多数是 OCR 错误。
我想找到文档中使用的所有字符以轻松发现错误(例如 UNIQ
命令,但针对字符,而不针对行)。
我在Ubuntu上。 我应该使用什么 Unix 命令来显示文本文件中使用的所有字符?
I have got a text file created using OCR software - about one megabyte in size.
Some uncommon characters appears all over document and most of them are OCR errors.
I would like find all characters used in document to easily spot errors (like UNIQ
command but for characters, not for lines).
I am on Ubuntu.
What Unix command I should use to display all characters used in text file?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这应该可以满足您的要求:
前提是
sed
将文件中的每个字符单独放在一行上,然后进行通常的sort | 操作。 uniq -c
序列会删除出现的每个唯一字符(仅保留一个),并提供每个出现的次数的计数。另外,您可以附加
| sort -n
到整个序列的末尾,按每个字符出现的次数对输出进行排序。例子:This should do what you're looking for:
The premise is that the
sed
puts each character in the file onto a line by itself, then the usualsort | uniq -c
sequence strips out all but one of each unique character that occurs, and provides counts of how many times each occurred.Also, you could append
| sort -n
to the end of the whole sequence to sort the output by how many times each character occurred. Example:这将做到这一点:
自行运行,该程序会生成:
如果您也想要文字字符和/或字符名称,那么很容易添加。
如果您想要更复杂的东西,该程序可以通过 Unicode 属性来计算字符。它可能足以满足您的目的,如果不能,您应该能够对其进行调整。
例如:
This will do it:
Run on itself, that program produces:
If you want the literal character and/or name of the character, too, that’s easy to add.
If you want something more sophisticated, this program figures out characters by Unicode property. It may be enough for your purposes, and if not, you should be able to adapt it.
For example:
至于使用 *nix 命令,上面的答案很好,但它没有获得使用统计信息。
但是,如果您确实想要文件上的统计信息(例如最稀有使用的、中值的、最常用的等),这个 Python 应该可以做到。
As far as using *nix commands, the answer above is good, but it doesn't get usage stats.
However, if you actually want stats (like the rarest used, median, most used, etc) on the file, this Python should do it.