Это довольно легко сделать с awk
. Разделите файл на пробел или :
в качестве разделителя полей и сгруппируйте строки по слову после двоеточия
awk -F'[: ]' '!unique[$2]++' file
-F[: ]
определяет разделитель полей для разделения отдельных слов в строке, а деталь !unique[$2]++
создает карту хеш-таблицы на основе значения из $2
. Мы увеличиваем значение каждый раз, когда значение отображается в $2
, поэтому на следующей итерации условие отрицания !
в строке будет препятствовать повторной печати строки.
Определение регулярного выражения с флагом -F
может поддерживаться не во всех awk
версиях. POSIX-совместимым способом вы можете сделать
awk '{ split($0,a,"[: ]"); val=a[2]; } !unique[val]++ ' file
В приведенной выше части предполагается, что вы хотите создать уникальный файл, основанный на слове после :
, но для полностью основанного на первом столбце только просто сделайте
awk '!unique[$1]++' file