【发布时间】:2021-03-15 09:32:17
【问题描述】:
如何在 unix 中仅排序和显示每个唯一行的第一次出现?
例如, 文件包含:
abcd 5
abcd 2
abcd 10
xyz 1
xyz 4
xyz 5
需要的输出:
abcd 10
xyz 5
编辑: 我在第 1 列中有多次 abcd 和 xyz,在第 2 列中有不同的值。我需要的只是 sort -nk2 | abcd & xyz 的 head -1 或文件中 column1 中的任何内容。
找到了一种方法来解决这个问题,但任何人都可以使用更好的解决方案进行更新。 我可以执行 awk column1,将 -u 排序到文件中,然后 grep 唯一排序的 column1 内容并执行排序 -nk2 | head -1 得到预期的结果。
谢谢,
马克
【问题讨论】:
-
你尝试排序 file.log |唯一的-u?如果文件包含行(不是您的示例中的空格分隔的单词),这应该可以工作。顺便说一句,您提供的“需要的输出”不是默认的字母数字排序。如果您实际上有空格分隔的项目或想要自定义排序,这将使命令复杂化。还是一行两个字?考虑改进样本输入和输出。
-
@mak - 你的问题是荒谬的。 唯一行的出现是第一次,最后一次,唯一的出现。
-
@armali 如果我的解释不清楚,请按照输入和所需输出示例进行操作。我在第 1 列中有多次 abcd 和 xyz,在第 2 列中有不同的值。我需要的只是 sort -nk2 | abcd & xyz 的头 -1 或文件中的 n 行。
-
很抱歉,如果您懒得纠正您问题中的不一致(不仅仅是歧义),我不打算寻找答案。
标签: unix