标签: sorting

加入超过 6 亿行的文本文件

我有两个文件,huge.txtsmall.txt. huge.txt有大约 600M 行,它是 14 GB。每行有四个空格分隔的单词(标记),最后是另一个带有数字的空格分隔列。small.txt有 150K 行,大小为 ~3M,一个空格分隔的单词和一个数字。

这两个文件都使用 sort 命令进行排序,没有额外的选项。两个文件中的单词都可能包含撇号 (') 和破折号 (-)。

所需的输出将包含huge.txt文件中的所有列以及匹配small.txt第一个单词huge.txt和第一个单词的第二列(数字)small.txt

我下面的尝试惨遭失败,并出现以下错误:

cat huge.txt|join -o 1.1 1.2 1.3 1.4 2.2 - small.txt > output.txt

join: memory exhausted  
Run Code Online (Sandbox Code Playgroud)

我怀疑的是,即使文件是使用以下方式预先排序的,排序顺序也不正确:

sort -k1 huge.unsorted.txt > huge.txt
sort -k1 small.unsorted.txt > small.txt
Run Code Online (Sandbox Code Playgroud)

问题似乎出现在带有撇号 (') 或破折号 (-) 的单词周围。我还尝试使用最后-d遇到相同错误的选项进行字典排序。

我尝试将文件加载到 MySQL,创建索引并加入它们,但在我的笔记本电脑上似乎需要数周时间。(我没有用于此任务的具有更多内存或快速磁盘/SSD 的计算机)

我看到了两种方法,但不知道如何实现其中任何一种。

  1. 如何以 join 命令认为文件正确排序的方式对文件进行排序?

  2. 我正在考虑计算MD5或字符串的其他一些哈希值以去除撇号和破折号,但在行尾保留数字。使用散列而不是字符串本身进行排序和连接,最后将散列“翻译”回字符串。由于只有 150K 哈希值,所以还不错。为每个字符串计算单个散列的好方法是什么?一些AWK魔法?

请参阅最后的文件示例。

巨大的样本.txt

had …
Run Code Online (Sandbox Code Playgroud)

awk sed command-line sorting join

7
推荐指数
3
解决办法
1746
查看次数

Outlook 2010 无法对邮件进行分类

我无法对收件箱中的邮件进行分类。我正在谈论的是分配颜色类别的能力。我习惯于只需单击打开消息功能区中的图标并选择颜色即可。通常出现在功能区“标签”中的类别图标不存在。当我尝试通过“自定义功能区”添加它时,图标在那里,但它是灰色的。

email sorting inbox microsoft-outlook-2010

7
推荐指数
2
解决办法
2万
查看次数

在 utf-8 整理中,为什么 11- 小于 1-?

我发现 ASCII 中的排序结果:

源文件test

1-
11-
1-a
11-a
Run Code Online (Sandbox Code Playgroud)

使用 ASCII 排序:

$ LANG=en_US.ascii sort test
1-
1-a
11-
11-a
Run Code Online (Sandbox Code Playgroud)

并使用 UTF-8:

$ LANG=en_US.utf8 sort test
1-
11-
11-a
1-a
Run Code Online (Sandbox Code Playgroud)

我觉得这太违反直觉了,而且不是字典顺序。

字符 '-' ( 002d) 不是总是小于[0-9]( 0030-0039) 吗?UTF-8 整理的一般规则是什么?

以及如何绕过它,在 Linux中使UTF-8 的其他字符保持不变,而只需-减少然后[0-9]呢?(因此,它可以影响的结果ls --sortsort等等)

unicode ordering sorting utf-8

7
推荐指数
1
解决办法
1487
查看次数

如何在 OS X Lion 中对文件夹进行排序,而不必像“排列方式”那样对文件进行分组?

很抱歉,我更喜欢 Snow Leopard 中的一些东西。在 Finder 中对文件进行排序就是其中之一。

如果我“排列方式”->“无”,它不会对项目进行分组,它看起来像 10.6。我喜欢这个。我仍然可以单击栏以按名称等进行排序,并且看起来不错并且不分组:

在此处输入图片说明

但是,如果我选择“排列方式”并选择另一个选项,文件夹开始看起来不同(列标题)并开始分组:

在此处输入图片说明

  1. 我不希望他们分组。
  2. 我想使用旧的键盘快捷键,我认为它们是 alt+1 - alt+6 来更改排序顺序。此外,再次按下键盘快捷键会将排序顺序从升序切换为降序。

我怎样才能让我在 Lion 上的生活更美好?Applescript 是一个可以接受的解决方案,但也许编辑默认的 plist 文件也可以工作或解锁一些隐藏的选项。

finder sorting osx-lion macos

7
推荐指数
1
解决办法
2584
查看次数

通过 MD5 哈希查找所有重复文件

我正在尝试查找所有重复文件(基于 MD5 哈希)并按文件大小排序。到目前为止,我有这个:

find . -type f -print0 | xargs -0 -I "{}" sh -c 'md5sum "{}" |  cut -f1 -d " " | tr "\n" " "; du -h "{}"' | sort -h -k2 -r | uniq -w32 --all-repeated=separate
Run Code Online (Sandbox Code Playgroud)

这个的输出是:

1832348bb0c3b0b8a637a3eaf13d9f22 4.0K   ./picture.sh
1832348bb0c3b0b8a637a3eaf13d9f22 4.0K   ./picture2.sh
1832348bb0c3b0b8a637a3eaf13d9f22 4.0K   ./picture2.s

d41d8cd98f00b204e9800998ecf8427e 0      ./test(1).log
Run Code Online (Sandbox Code Playgroud)

这是最有效的方法吗?

linux sorting md5sum

7
推荐指数
1
解决办法
8655
查看次数

在 bash 中按字典顺序排序

我希望数据按照 Python 排序的方式排序,比较 ASCII 值。但是sort命令似乎太聪明了。看一看。由于'.' < '9'

$ sort
.
9
^D
.
9
Run Code Online (Sandbox Code Playgroud)

和 :

$ sort
1.
19
^D
1.
19
Run Code Online (Sandbox Code Playgroud)

这两个还好。但出于某种原因,如果我只是在末尾添加字符:

$ sort
1.c
19z
^D
19z
1.c
Run Code Online (Sandbox Code Playgroud)

可能它试图将其解读为数字或其他东西。我不想那样,我希望它对比较每个字符的 ASCII 值的东西进行排序。在 中找不到这样的选项man,有什么想法吗?

bash sorting

7
推荐指数
1
解决办法
5007
查看次数

如何按标题对 Google Drive 搜索结果进行排序?

我发现 Google Drive 作为在线笔记本来存储我的日记和记录非常方便,我可以随时随地访问。

现在,当我想搜索特定的文本字符串时,唯一的选择是按相关性和修改日期排序,两者都不是很有帮助。

我想按标题(文件名)对搜索结果进行排序。

到目前为止,我发现已经提出了这个想法,但没有实施

有什么普通用户可以做的吗?喜欢安装一些应用程序或附加组件?

search sorting filenames google-drive

7
推荐指数
1
解决办法
1283
查看次数

如何在 Thunderbird 上禁用消息排序?

当我想点击最新消息时,我会不断点击“主题”排序按钮。

如何完全禁用排序?也许通过破解 .exe 文件?

这几乎是无用的功能,我的意思是排序。我想不出除了按日期以外的其他方式对它们进行排序的原因。

我正在谈论的按钮的视觉呈现: 在此处输入图片说明

email thunderbird sorting windows-xp

7
推荐指数
1
解决办法
920
查看次数

在 Windows 10 文件资源管理器中禁用忽略连字符进行排序

在 Windows 10文件资源管理器中,为了对文件或目录/文件夹名称进行排序,会忽略连字符(和撇号?)字符。例如:

在此处输入图片说明

有人知道如何禁用这种行为吗?

它既不受注册表设置的影响,也不受HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\?CurrentVersion\?Policies\?Explorer\?NoStrCmpLogical等效的组策略设置“关闭 Windows 资源管理器中的数字排序”的影响。

windows-explorer sorting windows-10

7
推荐指数
1
解决办法
1478
查看次数

在按大小对搜索结果进行排序时,Windows 资源管理器按什么顺序对文件夹进行排序?

文件按大小而不是文件夹排序,所以我想知道 Windows 资源管理器在显示它们时如何决定文件夹的顺序。我使用 Windows 7 SP1 x64 Ultimate。

按大小排序的示例:

在此处输入图片说明

windows-7 windows-explorer sorting

7
推荐指数
2
解决办法
1131
查看次数