【问题标题】:bash remove all but one duplicate matches from a filebash 从文件中删除除一个重复匹配项之外的所有匹配项
【发布时间】:2014-08-06 16:45:58
【问题描述】:

我有一个包含测试失败的大文件。其中许多测试有重复的失败。我想删除所有重复项,保留每种类型之一。以下是该文件的摘录:

034 [power] 34 of 343 check
056 [drive] 666 of 3345
099 [power] 53 of 4354
103 [power] 60 of 4354
231 [cpu]   2 of 653
437 [drive] 65 of 879
862 [speed] 864 of 4397 fast

在此示例中,我想删除重复项,即额外的 [power] 和 [drive] 行

034 [power] 34 of 343 check
056 [drive] 666 of 3345
231 [cpu]   2 of 653
862 [speed] 864 of 4397 fast

我尝试使用 grep -m 1 和 grep -v 的组合,但不幸的是这不起作用。

【问题讨论】:

    标签: bash grep duplicates


    【解决方案1】:

    喜欢这样吗?

    kent$  awk '!a[$2]++' file
    034 [power] 34 of 343 check
    056 [drive] 666 of 3345
    231 [cpu]   2 of 653
    862 [speed] 864 of 4397 fast
    

    【讨论】:

    • 太棒了。完美运行。谢谢。试图弄清楚你的代码是如何工作的。我了解 [$2],但不了解其余部分。你介意解释一下吗?
    • @stevo 在这里您可能会找到一些有用的信息。 stackoverflow.com/questions/15797442/…
    • @jaypal 感谢您的建议。从来不知道说谢谢的首选方式。未来肯定会这样做。另外,鉴于我仍然是菜鸟,我的代表还不够高,无法投票。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 2020-05-30
    • 2018-11-27
    • 2019-01-13
    • 1970-01-01
    • 2013-07-03
    相关资源
    最近更新 更多