Использование 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 .

  • Как uniq не является уникальным, что существует также uniq -unique?
  • Обобщение uniq
  • Что сделал `uniq -t`?
  • Граф и сумма нет. появления каждой уникальной строки в файле
  • 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

    Есть ли какие-либо онлайн-хранилища ячеек или сайты для обмена (возможно, для ноутбуков)

    Странное поведение терминала: клавиша «j» не работает в urxvt

    Масштаб ssh перенаправленный графический интерфейс

    Как ОС знает, что команде требуется sudo?

    Как проверить, поддерживает ли Wi-Fi Wifi Hotspot или нет

    Наследовать перенаправления IO из сценария в другой

    Как я могу переименовать каталог с именем, состоящим только из непечатаемых символов

    Почему правила не объединяются в конфигурационный файл ssh?

    Как назвать и где разместить сценарий выскочки?

    Могу ли я запустить Linux с разделом Windows EFI или мне нужно подключиться / загрузиться в раздел EFI?

    Удалены ли удаленные тома LUKS локально с помощью sshfs, видимых для удаленных пользователей?

    Могу ли я преобразовывать поля в XML в теги с помощью xmlstarlet?

    Передача обычных файлов только на `sed -i`

    Почему ручное крепление устанавливает различное владение файлами?

    xtightvnc через ssh gateway – соединение отказано

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