【问题标题】:Remove lines with duplicate cells删除包含重复单元格的行
【发布时间】:2011-07-12 23:59:32
【问题描述】:

我需要删除具有重复值的行。例如,我需要删除下面块中的第 1 行和第 3 行,因为它们包含“Value04” - 我无法删除所有包含 Value03 的行,因为该数据的某些行不重复并且必须保留。我可以使用任何编辑器; excel,vim,任何其他 Linux 命令行。

最后不应该有重复的“UserX”值。 User1 应该只出现 1 次。但是如果 User1 存在两次,我需要删除包含“Value04”的整行并保留带有“Value03”的行

Value01,Value03,User1
Value02,Value04,User1
Value01,Value03,User2
Value02,Value04,User2
Value01,Value03,User3
Value01,Value03,User4

非常感谢您的想法和想法。

编辑:为了清楚起见并在编辑过程中留下文字。

【问题讨论】:

  • 你能把你想要的东西放在最后吗?
  • 第2行包含Value03,除非你从0开始计数。
  • 您是否愿意删除这些行:Value01,Value03,User2 |值01,值03,用户3 | Value01,Value03,User4

标签: text duplicates


【解决方案1】:

以下 awk 命令删除第三列中除第一次出现的值之外的所有值:

$ awk -F',' '{
  if (!seen[$3]) {
    seen[$3] = 1
    print
   }
}' textfile.txt

输出:

Value01,Value03,User1
Value01,Value03,User2
Value01,Value03,User3
Value01,Value03,User4

【讨论】:

    【解决方案2】:

    在 Perl 中也是这样:

    perl -F, -nae 'print unless $c{$F[2]}++;' textfile.txt 
    

    这里使用自动拆分模式:"-F, -a" 用逗号拆分并将结果放入@F数组中

    【讨论】:

      猜你喜欢
      • 2019-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-29
      • 1970-01-01
      相关资源
      最近更新 更多