代码之家  ›  专栏  ›  技术社区  ›  RandomQuestion

带特定列的uniq-u

  •  2
  • RandomQuestion  · 技术社区  · 11 年前

    我想根据特定列中只出现一次的值打印行。在下面的示例中,val2和val3只出现一次。

    输入

    val1,1
    val2,2
    val1,3
    val3,4
    

    输出

    val2,2
    val3,4
    

    uniq -u 似乎没有指定列的选项。我也试过 sort -t, -k1,1 -u 但每一行都打印一次。

    2 回复  |  直到 11 年前
        1
  •  2
  •   Karoly Horvath    11 年前
    awk -F, '{c[$1]++; t[$1]=$0} END {for(k in c) {if (c[k]==1) print t[k]}}'
    
        2
  •  1
  •   tlehman    11 年前

    对于awk来说,这听起来像是一个问题,假设生成

    val1,1
    val2,2
    val1,3
    val3,2
    

    被调用 foo ,然后用管道将其放入锥子中,如下所示:

    foo | awk -F, '$2 == 2 {print}'