bash - 仅删除不连续的重复行而不更改文件顺序

问题描述 投票:0回答:1

我有一个文件,它是计算密集型进程的输出,该进程遇到了某种错误,导致创建大量重复行。但是,“一些”重复项是正确的,并且需要正确解析输出。我可以区分这两行,因为当且仅当它们是连续的并且包含非字母数字字符时,这些重复的行才是正确的。为了正确解析文件,维护文件的顺序也很重要。使用 bash、awk 或其他命令行脚本,如何仅删除不连续的重复行,同时保留原始行顺序? “良好”重复样本:

... [0.799609,0.8016), indices: 254317-53689123 {[489,713] (0.799609), [67,489] (0.778011), [686,713] (0.762261), [67,686] (0.735254)} {[489,713] (0.799609), [67,489] (0.778011), [686,713] (0.762261), [67,686] (0.735254)} ...

“坏”重复样本:

value range: [0.665199,0.934318] distance matrix with 1003 points, using threshold at enclosing radius 0.882441 value range: [0.665199,0.934318] distance matrix with 1003 points, using threshold at enclosing radius 0.882441 persistent homology intervals in dim 0: persistent homology intervals in dim 0: [0, ): {[879]} [0, ): {[879]}

我已经尝试过
这个解决方案

并看到了这个解决方案,但这当然会删除所有重复的行,并且不会保留我需要保留的类型的重复项。我还看到了一个解决方案,它只删除连续行,但没有一个能起到相反的作用。 非常感谢您的帮助!

bash awk duplicates
1个回答
0
投票
value range: [0.665199,0.934318]

行是错误的重复项,请尝试一下:

awk '
    prev == $0 && /[^0-9a-zA-Z]/ || !seen[$0]++ {print}         # print the line if the condition is met
    {prev = $0}                                                 # preserve the line for the next comparison
' file

	
© www.soinside.com 2019 - 2024. All rights reserved.