【发布时间】:2020-04-16 16:58:51
【问题描述】:
我有 2 个大约 1.2 GB 数据的大文件,带有键和值,我需要根据键比较两个文件并将值的差异存储在第三个文件中,
文件1:
test1 marco;polo;angus
test2 mike;zen;liza
test3 tom;harry;alan
test4 bob;june;janet
文件 2:
test1 polo;angus
test2 mike
test4 bob;janet
我想比较 file1 的前两列和 file2(在前两列中搜索 file2 的全部内容),如果它们匹配打印值的差异。然后搜索文件 1 的第二行,以此类推。还应打印文件 1 中唯一的键。
预期输出:
test1 marco
test2 zen;liza
test3 tom;harry;alan
test4 june
我的文件很大,大约有 100,000 行,所以我想加快执行速度。
【问题讨论】:
-
内存使用是否值得关注?
-
另外,我删除了 bash、ksh 和 sh 标签。重新添加您实际使用的一个。
-
感谢回复伙伴,我是shell脚本的新手,运行命令时出现以下错误,-bash: perl: command not found -bash: perl: command not found -bash: perl:找不到命令 -bash: datamash: 找不到命令 -bash: perl: 找不到命令 -bash: perl: 找不到命令 -bash: perl: 找不到命令 comm: '/dev/fd/62': 没有这样的文件或目录 这是在 shell 脚本中运行,使用 #!/usr/bin/env bash 真正的条目如下所示: 1332239_44557576_CONTI Lased & Micro kjd $353.50_30062020_lsdf3_no-rule 343323H;343434311H;454656556H;343343432H
-
关于错误消息
bash: perl: command not found并不神秘。您正在尝试从 bash 调用命令 perl,但在您的 PATH 中找不到该命令。 perl 不是一个标准的 UNIX 工具,所以你可能必须安装它,但是你在你的平台上安装它。