gpt4 book ai didi

Linux - 删除文件 2 大数据中文件 1 中的行

转载 作者:太空宇宙 更新时间:2023-11-04 04:52:21 26 4
gpt4 key购买 nike

有两个文件:

file1:
a
b
c
d

file2:
a
b
f
c
d
e

output file (file2) should be:
f
e

我希望file1中的行应该直接在file2中删除。我希望输出不应该是一个新文件。应该直接删除文件2中的。当然也可以创建一个临时文件。我的真实文件二包含超过 300.000 行。这就是一些解决方案的原因:

comm -13 file1 file2

不起作用。

最佳答案

comm 需要对输入文件进行排序。您可以使用进程替换来实现:

#!/bin/bash
comm -13 <(sort file1) <(sort file2) > tmp_file
mv tmp_file > original_file

输出:

e
f

或者,如果您有足够的内存,则可以使用以下 awk 命令,该命令不需要对输入进行排序:

awk 'NR==FNR{a[$0];next} !($0 in a)' file1 file2

输出(保留排序顺序):

f
e

请记住,数组a的大小直接取决于file1的大小。

PS:也可以使用grep -vFf file1 file2,内存要求与awk解决方案相同。鉴于此,我可能只会使用 grep

关于Linux - 删除文件 2 大数据中文件 1 中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54732848/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com