awk для разделения входного файла на 2 файла (один для дублированных значений и один для уникальных значений)

У меня есть входной файл, как показано ниже.

file.txt 14 2.692022 author1 0 14 2.57826 author2 1 229 2 author3 2 323 2 author4 3 514 2.0625 author5 4 

Я пытаюсь разделить файл с дублированными значениями как один файл, а остальные значения – на другой. Итак, для указанного выше ввода я пытаюсь создать такие файлы, как,

 file1.txt 14 2.692022 author1 0 14 2.57826 author2 1 file2.txt 229 2 author3 2 323 2 author4 3 514 2.0625 author5 4 

Я не могу понять, как использовать awk для этой цели.

 awk '{print $1}' file.txt | uniq -d > file1.txt 

Вышеупомянутая команда дает мне только дублирующиеся значения в файле. Кроме того, он дает мне только поле1, но не все 3 поля.

awk поддерживает прямое перенаправление файлов в своем синтаксисе.

 awk 'BEGIN{prev=""} {if($1==prev) { print $0 > "duplicates.txt"} else { print $0 > "originals.txt"}; prev=$1; }' file.txt 

Я предположил, что файл уже отсортирован. Если это не так, это становится намного сложнее.

EDIT: это лучше?

 awk 'BEGIN{prev=""; prevfull=""} $1==prev{ if(prevfull!=""){print prevfull > "duplicates.txt"; prevfull=""}; print > "duplicates.txt"} $1!=prev{ if(prevfull!=""){print prevfull > "originals.txt"}; prevfull=$0} {prev=$1; } END{print prevfull}' file.txt 

Это определенно можно сделать лучше (ifs определенно не оптимально), но это показывает общую идею.