LINUX.ORG.RU


$ man uniq
$ man sort

в направлении ключика -u

ps: например, $ uniq file или $ cat file | sort -u

// wbr

klalafuda ★☆☆
()

Если на баше только "видимо", то лови на перле :) :

echo -e 'AAA\nsss\nfff\nAAA\nbbb\nbbb' | \
perl -ne '$x{$_} = $. if not exists $x{$_}; END {print sort {$x{$a} <=> $x{$b}} keys %x}'

amm ★★
()
Ответ на: комментарий от amm

Ты хоть код проверил, который написал?

В хеше значения не дублируются + сортировка не работает (еще бы).
С учетом исправлений:

echo -e 'AAA\nsss\nfff\nAAA\nbbb\nbbb' | perl -ne '$x{$_} = 1; END {print sort keys %x}'

aton
()
Ответ на: комментарий от amm

Черт, все-таки "<=>" надо, номера строк же сравниваем.

amm ★★
()

если нужно убрать повторяющиеся строки, то пишешь вот так:

cat /var/log/access.log | awk '!_[$0]++' | awk '{print $0}'

если нужно убрать строки с повторяющимися подстроками, то пишешь вот так($1 или $5 выбираешь в завис):

cat /var/log/access.log | awk '!_[$1]++' | awk '{print "host "$1";"}'

т.е. я последней строчкой смотрю, кто ко мне ходит и сколько уникальных хостов и кто это по домену...

p.s. иногда почитываю ньюсгруппу comp.lang.awk...

vilfred ☆☆
()
Ответ на: комментарий от aton

на перле это делается так-же как на awk

если нужно убрать повторяющиеся строки:

print join " " => @{[grep {!$_{$_}++} @unsort]};

если нужно убрать строки с повторяющимися подстроками:

@uniq = grep {!$_{$1}++ if m!(AAA.*?BBB\d+?)!} @unsort;

vilfred ☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.