Dan*_*ale 3 windows linux awk sorting
我有一个 400 兆字节的文件。该文件是一个单词列表,每个单词占一行。行尾是 cr/lf 和 lf 的混合。有些词是unicode。
我更喜欢 Linux 或 Windows 的答案。我很乐意安装软件,但我更喜欢开源。
我需要删除所有少于 8 个字符的单词。然后我需要对列表进行重复数据删除。(对列表进行排序很好,但不需要,除非它是流程的一部分。)我不在乎 unicode 单词 - 它们可以留下也可以离开。把它们去掉就好了。
要删除所有不超过 7 个字符的单词,我使用 awk:
awk "length($0) > 7" wordlist.txt > mynewwordlist.txt
Run Code Online (Sandbox Code Playgroud)
(这是 Windows,抱歉“而不是 ')
然后我尝试使用排序,因为我可以再次使用 awk 去重复行。Sort 不喜欢这个词表。我认为(但我不确定)unicode 破坏了它。
那么,我该如何去重复词表呢?或者我如何对词表进行排序,以便我可以使用 awk 进行重复数据删除?
要进行重复数据删除,您需要sort -u- 它只会输出唯一的行。这是 POSIX 指定的选项,因此您可能会在任何系统上找到它。
sort -u wordlist.txt | awk 'length($0) > 7'
Run Code Online (Sandbox Code Playgroud)
awk如果您使用的是 Windows,请使用双引号。请注意,排序步骤不是可选的,因为uniq需要相邻的重复行才能删除它们。
如果您有 Unicode 问题,这可能是您的语言环境问题。您可以设置LC_ALL=C强制进行本机字节值比较——无论如何,实际的排序顺序对您来说并不重要。或者,iconv如果这是问题,您可以使用将文件从 Unicode 转换为另一种编码。
| 归档时间: |
|
| 查看次数: |
1655 次 |
| 最近记录: |