Removing duplicate rows from Notepad++
我正在寻找一种从我的Notepad ++文件中删除重复行的方法。 每个行的行不完全相同。 这是情况。 我有一个大概率公司名称的大文件,其概率值也是如此(每个都由一个标签分隔)。 所以格式如下:
1 2 3
| ATT .7213
SAMSUNG .01294
SAMSUNG .90222 |
因此,我需要删除其中一行,因为第一列中存在匹配项。 只要我最后得到一行,我就不会偏好我需要删除哪一个。 我试图使用TextFX进行独特排序,但它正在寻找整行重复,而不仅仅是第一列。 如果有人能提供一个方便的解决方案来解决这个问题,我将非常感激。 使用awk,sed或cut的Bash脚本答案也是可以接受的,也可以使用正则表达式。
谢谢!
-
在Notepad ++中删除重复行的可能重复
-
@PankajJaju问题本身是不同的,但似乎其他问题的答案之一可以适应解决这个问题。
使用awk,你可以说:
这将仅保留第一个字段具有唯一值的行。
-
由于这只保留具有唯一值的那些,它是否会删除SAMSUNG行?
-
它不会删除SAMSUNG行;它宁愿保留第一个而忽略其余的。
-
如果是这种情况,那么你在答案中的解释有点令人困惑。假设它只保留具有唯一值的行将意味着不会保留重复行的所有实例(因为第一个和其余的都不是唯一的)。
-
@Jon第一次遇到三星行时,a[SAMSUNG]的值为0,否定变为非零值,表示应该打印该行。在接受该行之后,a[SAMSUNG]递增,因此在将来,a[SAMSUNG]将始终具有非零值,当否定变为0时,其拒绝该行。
-
另一方面,这比我的答案更有效,因为它在O(n)时间内运行,而不是我的基于排序的答案所需的O(n lg n)。
-
@chepner我指的是答案的措辞,而不是实际的结果。答案的措辞令人困惑,因为"独特"的定义甚至会排除一系列重复的第一个。
使用sort:
1
| sort -k1,1 -u companies.txt |
输出将包含整行,但只考虑排序键(第一个字段)来识别重复项。
-
谢谢你这完美的工作,现在我有我需要的东西。因此,使用-k1对关键字段1进行排序和指定,那么逗号之后的1究竟是什么呢?我知道-u是为了要求独特性。
-
-k1本身使用字段1到记录的末尾。例如,要对字段2到5进行排序,可以使用-k2,5。 -k1,1将比较限制为第一个字段,仅限于第一个字段(因为它是一个单元素范围)。
-
好的,谢谢你的好意并解释一下。很高兴现在知道它是如何工作的。