Просто змініть команду awk на стовпець, який ви хочете виконати, щоб видалити повторювані рядки на основі (у вашому випадку третій стовпець):
awk '!seen[$3]++' filename
Ця команда вказує, awk
які рядки надрукувати. Змінна $3
містить весь вміст стовпця 3, а квадратні дужки мають доступ до масиву. Отже, для кожного третього стовпця рядка в імені файлу вузол названого масиву seen
збільшується, а рядок друкується, якщо вміст цього вузла (стовпця 3) раніше не був встановлений ( !
).
Вищенаведена awk
команда спрацює, якщо ваші стовпці у вхідному файлі розмежовані між собою space
або Tab
між ними, якщо стовпчики розмежовані чимось іншим, вам потрібно сказати йому, щоб пробудити його -F
параметр. Так, наприклад, якщо всі стовпці розмежовані комою ( ,
) і хочуть видалити рядки бази на третьому стовпці, що використовується -F','
опція.
awk -F',' '!seen[$3]++' filename
-u
буде видаляти лише повторювані рядки , а не дублюючі ключі ... але я помиляюся.