Intereting Posts
Беспроводная мышь часто замерзает на секунду на ноутбуке, когда на батарее Как запустить скрипт без root для sniff network (libpcap)? Завершение Smart Bash В зависимости от позиции «Аргумент» Есть ли способ сделать загрузочный Linux-диск USB с Linux-контейнера докеров? Запуск эмулятора терминала, не зная, какие из них установлены Установка пароля root и sudo -i Как поиск в $ PATH работает под капотом? OpenVPN – Ошибка привязки Socket на локальном адресе IP: 1194: Невозможно назначить запрошенный адрес Почему systemd-coredump хранит дамп в самой памяти? Apache: Имитировать 100 новых подключений в секунду с помощью ab Как заставить AltGr + i, j, k, l работать правильно как клавиши курсора? Настройка статического ip для точки доступа с помощью connman Как я могу сказать cron запускать команду каждый день (нечетный / четный) обратный файл кошачьих файлов Отказ в доступе к нескольким каталогам в файле vsftpd.conf

Печать строки, если значение в столбце изменяется

Я знаю, что это должно быть легким путем googling, но не удалось. Простите за это.

Я хотел бы напечатать первую строку групп, определяющую значение в первом столбце. Разделителем является вкладка.

Входные данные:

A 5 A 3 B 2 B 1 B 77 C 4 C 10000 D 99 

Вывод:

 A 5 B 2 C 4 D 99 

Самый короткий:

 awk -F'\t' '!a[$1]++' file 

Выход:

 A 5 B 2 C 4 D 99 

  • !a[$1]++ – обеспечивает печать строк при первом уникальном значении 1-го столбца

Что-то вроде может сделать работу:

 awk -F\t 'BEGIN {A=""} {if ($1!=A) { print $0; A=$1}}' input_file 

Когда вы инициализируете переменную A, выберите начальное значение, которое не входит в список существующих в столбце 1

Вот два варианта не-awk:

sort u foo -k 1,1

Используйте sort только для возможности -u ( --unique ). Для сравнения используйте только первый символ ( -k 1,1 ).

rev foo | uniq -f 1 | rev

Используйте uniq . Опция -f только позволяет указать поле начала для сравнения, поэтому мы используем некоторый legerdemain для первого обратного ( rev ) ввода перед uniq , а затем снова возвращаем этот вывод.