【问题标题】:uniq -u with specific column具有特定列的 uniq -u
【发布时间】:2013-09-04 20:43:31
【问题描述】:

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

输入

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

输出

val2,2
val3,4

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

【问题讨论】:

  • 您要保留订单吗?
  • no.. 顺序无关紧要。

标签: shell unix uniq


【解决方案1】:
awk -F, '{c[$1]++; t[$1]=$0} END {for(k in c) {if (c[k]==1) print t[k]}}'

【讨论】:

    【解决方案2】:

    听起来像是 awk 的问题,假设产生的命令

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

    被称为foo,然后像这样通过管道将其导入awk:

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

    【讨论】:

    • 我看错了你的问题,修改了awk代码来回答你的问题
    • 我的问题陈述可能不清楚。对此感到抱歉。我想打印在第 1 列中具有值的行仅出现一次。在上面的例子中,val2 和 val3 只出现一次。它与第二列 2 无关。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多