perl -F'\t|,' -lane 'my %h; print shift @F, "\t", join ",", sort grep !$h{$_}++, @F' dataf
-F'\t|,'
=> разделит поля каждой записи на массив @F
на TAB
или запятая
символов. -l
также установит RS
в новую строку
и ORS
в новую строку
. -a
автоматически разбивает каждую запись на слова на основе FS
, выбранной с помощью -F
. -n
установит неявное чтение записи в цикле на входе И
будет печатать только по запросу. -e
— это код Perl
, который будет выполняться при каждой записи ввода на основе RS
, выбранной с помощью -l
выше. shift
, а остальные элементы будут уникальными
путем сохранения их в виде ключей хэша, %h
, который должен генерироваться заново каждый раз, когда считывается запись. Затем уникальные элементы сортируются, соединяются запятой и печатаются. пример из моего файла конфигурации ssh;
Host vmike2-squid-cache
User mike
ProxyCommand ssh -q -A -x ???.???.???.??? -W %h:22
(единственное, что я изменил, это ip)