如何对文本文件中的 uniq 值进行排序?

如何对文本文件中的 uniq 值进行排序?

我有一个文本文件,如下所示:

A f1
B f2
A f3
B f4
B f5

我想根据第一列值对其进行排序并将其保存在单独的文件中。

期望的输出:

A.txt:

A f1 
A f3

B.txt:

B f2
B f4
B f5

尝试过uniq但它不起作用。编辑:我无法以所需的方式发布 txt 文件和输出文件,但它应该在下一行中

答案1

在大多数情况下,您可以简单地:

awk '{print > $1 ".txt"}' file

答案2

您所需要的只是 awk 而不是 uniq。

awk ' $1 == "A" { print }' $file > something.txt` #This will print all A's

awk ' $1 == "B" { print }' $file > something.txt` #This will print all B's.

注意:$file将是您的输入日志的名称。

编辑:我原来的答案是基于提供的数据。我现在已经更新了。因此,我原来的“All you need is grep”不再有效,改为“awk”。

答案3

一个简短的 awk 脚本就可以完成这项工作:

sort file | awk '
  $1 != prev {prev = $1; if (out) close(out); out = $1 ".txt"}
  {print > out}
'

添加 是close()为了防止“打开文件过多”错误。

相关内容