gpt4 book ai didi

linux - 比较 2 个文件并仅删除重复行一次

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:08:38 26 4
gpt4 key购买 nike

与文件 2 相比,我需要从文件 1 中删除重复值。当我尝试这样做时,我遇到了这样的问题,因为文件 2(c,g) 中的值也位于文件 1 中的 [b] 下,这些也被删除了。但我的要求是只删除[a]下的那些。谢谢

$ less file 1
[a]
c
g
d
[b]
c
g
h

$ less file 2
[a]
c
g
d

最佳答案

您可以使用这个 awk 命令:

awk '/^\[.*?\]/{s=$0} FNR==NR{seen[s,$0]++; next} !seen[s,$0]' file2 file1
[b]
c
g
h

这个 awk 使用关联数组 seen,在 [...] 和所有后续记录中有一个复合键值 s,$0

在遍历 file2 时,它将这些值保存在数组中,而在遍历 file1 时,它将仅打印那些在 seen 中不可用的值,从而避免重复。

关于linux - 比较 2 个文件并仅删除重复行一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32781563/

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