我有一个文本文件,如下所示:
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()
为了防止“打开文件过多”错误。