我有一个文件,它是计算密集型进程的输出,该进程遇到了某种错误,导致创建大量重复行。但是,“一些”重复项是正确的,并且需要正确解析输出。我可以区分这两行,因为当且仅当它们是连续的并且包含非字母数字字符时,这些重复的行才是正确的。为了正确解析文件,维护文件的顺序也很重要。使用 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]}
我已经尝试过这个解决方案
并看到了这个解决方案,但这当然会删除所有重复的行,并且不会保留我需要保留的类型的重复项。我还看到了一个解决方案,它只删除连续行,但没有一个能起到相反的作用。 非常感谢您的帮助!
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