Использование 1-го символов при проверке дубликатов

У меня есть набор данных в файле:

AAAPOL.0001 AAAPOL.0002 AAAPRO.0001 AAAPRO.0002 AAAPRO.0003 AAAPRO.0004 AAAXEL.0002 AAAJOK.1111 AAAJOK.2222 

Мне нужно только первое вхождение с использованием шаблона 1-го 6 символов, поэтому мне нужно знать, как проверить дубликат / уникальность, которая будет соответствовать только 1-м 6 символам.

Команда должна вернуть это из приведенных выше данных:

 AAAPOL.0001 AAAPRO.0001 AAAXEL.0002 AAAJOK.1111 

У меня нет доступа к опции uniq -w .

    2 Solutions collect form web for “Использование 1-го символов при проверке дубликатов”

    Если вы не возражаете против порядка строк, которые нужно изменить, вы можете использовать sort -u с ключом сортировки, установленным для этих первых 6 символов:

     sort -u -k 1,1.6 

    Или до части до . :

     sort -t . -u -k 1,1 

    Использование awk

    В ваших примерах первые шесть символов сопровождаются периодом. Если это всегда верно, тогда:

     $ awk -F. '!c[$1]++' File AAAPOL.0001 AAAPRO.0001 AAAXEL.0002 AAAJOK.1111 

    Это работает с использованием . как разделитель полей и отслеживание количества раз, когда первое поле уже появилось.

    Если это не так, то:

     $ awk '!c[substr($0, 1, 6)]++' File AAAPOL.0001 AAAPRO.0001 AAAXEL.0002 AAAJOK.1111 

    substr($0, 1, 6) – первые шесть символов строки. Ассоциативный массив c отслеживает количество раз, когда мы видели эти первые шесть символов. Таким образом, если c[substr($0, 1, 6)] отличен от нуля, мы уже видели эти символы, и строка не должна печататься. В awk ненулевое значение означает true. Итак, мы инвертируем тест ! : это означает, что !c[substr($0, 1, 6)] истинно, если эти шесть символов ранее не были замечены. Заканчивает ++ обновляет счет в c прежде чем мы прочитаем следующую строку.

    Использование uniq

    Для справки для тех, кто, в отличие от OP, имеет доступ к версии uniq с параметром -w , а затем:

     $ uniq -w6 File AAAPOL.0001 AAAPRO.0001 AAAXEL.0002 AAAJOK.1111 
    Interesting Posts

    Является ли хорошей практикой сделать файл блокировки init скрипта неизменным?

    «Конфликтующее распространение: InRelease (ожидаемый выпуск, но получил релиз + 1)», что это такое?

    Как ограничить su от root до nis клиентов

    От 192.168.0.146 icmp_seq = 1 Destination Host Unreachable

    32bit EFI с 64-битной ОС Linux. Это можно сделать?

    Какие файлы библиотеки необходимы для запуска двоичного файла с альтернативной версией libc?

    Bash: Ошибка синтаксиса – Неожиданно рядом с токеном «else»

    Как проверить, установлен ли Apache SNI на Debian 8

    Как исправить ошибку «Kernel panic – не синхронизация: VFS: невозможно монтировать root fs на неизвестном блоке» и «данные LZMA повреждены»

    файлы журналов в CentOS 7

    Как добавить некоторую строку в сочетании с шаблоном в конце строки с шаблоном

    Должен ли я использовать / dev / sda или / dev / sdb в fstab при загрузке с USB?

    Дистанционно отключить вывод дисплея?

    Нет места на ep ring?

    Возвышенная командная строка открывает его дважды

    Linux и Unix - лучшая ОС в мире.