相关疑难解决方法(0)

根据一列中的重复项删除行而不进行排序

我有很大的 3 列文件(约 10,000 行),当该行第三列的内容出现在另一行的第三列中时,我想删除行。文件的大小使排序有点麻烦,我不能使用类似下面的代码,因为整行不相同;只是第 3 列的内容。

awk '!seen[$0]++' filename
Run Code Online (Sandbox Code Playgroud)

awk text-processing

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

'| 的多核等效项 排序 | uniq -c | sort -n' 命令

我想问一下 '| 是否有开箱即用的多核等价物。排序 | uniq -c | sort -n' 命令?

我知道我可以使用以下程序

split -l5000000 data.tsv '_tmp';
ls -1 _tmp* | while read FILE; do sort $FILE -o $FILE & done;
sort -m _tmp* -o data.tsv.sorted
Run Code Online (Sandbox Code Playgroud)

但它的味道有点压倒性。

sort parallelism

5
推荐指数
1
解决办法
1861
查看次数

GNU sort --compress-program 只压缩第一个临时文件

我正在对大文件(>100Go)进行排序,并且为了减少在磁盘写入上花费的时间,我正在尝试使用 GNU sort 的--compress-program参数。(相关:如何对大文件进行排序?

但是,在某些情况下似乎只有第一个临时文件被压缩。我想知道为什么,以及我可以做些什么来压缩所有临时文件。

我在用:

  • sort (GNU coreutils) 8.25
  • lzop 1.03 / LZO library 2.09

重现问题的步骤:

你需要一些东西,比如 ~15Go 空闲空间,~10Go ram,一段时间

首先,使用以下 C 代码创建一个 10Go 文件:

#include <stdio.h>
#include <stdlib.h>

int main(void) {
    unsigned long n;
    unsigned char i;
    srand(42);
    for(n = 0; n < 1000000000; n++) {
        for(i = 0; i < 3; i++) {
            printf("%03d", rand() % 1000);
        }
        printf("\n");
    }
    fflush(stdout);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

并运行它:

$ gcc -Wall -O3 -o generate generate.c
$ …
Run Code Online (Sandbox Code Playgroud)

compression gnu sort

3
推荐指数
1
解决办法
1135
查看次数

标签 统计

sort ×2

awk ×1

compression ×1

gnu ×1

parallelism ×1

text-processing ×1