команды unix удаление дублей - прошу помощи

12
Ylich
На сайте с 24.04.2006
Offline
123
1625

есть текстовый файл "big.txt", требуется удалить из него дубли

заливаю файл на сервер и ввожу из putty команды

cat big.txt

sort big.txt

sort big.txt | uniq

файл с русскими словами в кодировке cp1251

после ввода команд дубли не удалены

пытался переконвертировать из cp1251 в utf8 - русский текст превращается в кракозябры

как можно удалить дубликаты русских строк в фале?

ps в unix полный дуб

Спасибо!

С Уважением...
С
На сайте с 14.04.2011
Offline
63
#1

sort big.txt | uniq > big.txt-copy

Результат будет в big.txt-copy.

Либо сразу(но лучше не надо):

sort big.txt | uniq | tee big.txt
Ylich
На сайте с 24.04.2006
Offline
123
#2

Сентябрь, только отсортировал

было в big.txt

слово 2
слово 3
слово
слово 1
слово
слово 2

стало в big.txt-copy

слово
слово
слово 1
слово 2
слово 2
слово 3

дубли остались ((

iamsens
На сайте с 26.08.2009
Offline
115
#3

cat big.txt | sort| uniq > big_sorted.txt

VK
На сайте с 29.12.2011
Offline
42
#4

Ylich, покажите пример данных.

sort | uniq должны сделать свое дело.

Ylich
На сайте с 24.04.2006
Offline
123
#5

V2NEK, пример с данными в третьем посте - используются русские слова

iamsens, тоже не помогло, думаю проблема как раз в русскоязычности, если в файле как пример ввести англоязычные слова все сортируется и удаляется, но проблема, что исходный файл в котором удалять также русскоязычный

iamsens
На сайте с 26.08.2009
Offline
115
#6

язык тут не причем

>cat test.txt

два
три
два
три

>cat test.txt | sort | uniq
два
три

для sort и uniq, не важно, что находится внутри, он нормально и бинарные строки сортирует

кинь сюда 30-40 строк с файла, посмотрим что с ним не так

Ylich
На сайте с 24.04.2006
Offline
123
#7

>cat test.txt

два
три
два
три

>cat test.txt | sort | uniq
два
три

сделал также текстовый файл с "два три два три", закинул на впс, зашел из под putty и прям сразу в папке рут где лежит файл ввел команды - только отсортировалось

видимо глюк с впсом, пойду ковырять впску )))

iHead
На сайте с 25.04.2008
Offline
137
#8

еще у sort есть ключик -u

Рекомендуемый хостинг партнер 1С-Битрикс (https://www.ihead.ru/bitrix/), PHP-хостинг (https://www.ihead.ru/php/), доверенный партнер RU-CENTER (https://www.ihead.ru/news/573.html), официальный представитель REG.RU в Кирове (https://www.ihead.ru/news/851.html)
Андрей
На сайте с 30.09.2009
Offline
482
#9

no_doubles.pl

#!/usr/bin/perl -w

$inputF = shift;
$ouputF = 'out_'.$inputF;

open (F , "<$inputF");
@input = <F>;
chomp (@input);
close F;
%out = ();
@input = grep(!$out{$_}++, @input);

open (F , ">>$ouputF");
print F join("\n",@input);
close F;
chmod 700 no_doubles.pl
./no_doubles.pl big.txt

Сделает то что нужно и без проблем с кодировкой. По времени выполнения оказалось даже существенно быстрее.

EuroHoster.org ( https://eurohoster.org/ru/ ) - территория быстрых серверов. Выделенные серверы, VPS, SSL, домены и VPN.
Ylich
На сайте с 24.04.2006
Offline
123
#10

WapGraf, "shift" я правильно понял, что это имя файла из которого удаляем дубли?

Сделает то что нужно и без проблем с кодировкой. Возможно более медленно, но надежно!

на 2 млрд строк не загнется?

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий