Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Найти одинаковые строки в файле!  (Прочитано 9817 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Sova777

  • Участник
  • *
  • Сообщений: 208
    • Просмотр профиля
    • Несколько слов о NetBeans C/C++ Pack'е
Re: Найти одинаковые строки в файле!
« Ответ #30 : 24 Января 2009, 15:08:56 »
Программу на C++ собирал так: g++ -O3 -o unify unify.cpp
Вариант с Sun Studio:
sova@sova:~$ CC -fast -o unify unify.cpp
sova@sova:~$ time -p ./unify < access_log.30 > /dev/null
real 1.12
user 0.97
sys 0.16
Пользователь OpenSolaris 2008.11, Ubuntu 8.10, Windows XP. Mac OS X не нравится, стараюсь не использовать.

Оффлайн Jython

  • Участник
  • *
  • Сообщений: 173
  • Ubuntu 9.04 - user
    • Просмотр профиля
Re: Найти одинаковые строки в файле!
« Ответ #31 : 08 Марта 2009, 12:16:19 »
Господа прошу помощи.
Необходим скрипт поиска одинаковых строк в ОДНОМ файле с последующим удаленмием одной из идентичных строк.
Может кто уже сталкивался... У меня с программированием туго по этому и прошу помощи.

(Нажмите, чтобы показать/скрыть)


Так?

Оффлайн Tonal

  • Любитель
  • *
  • Сообщений: 82
  • Карма Кагью
    • Просмотр профиля
Re: Найти одинаковые строки в файле!
« Ответ #32 : 09 Марта 2009, 23:02:35 »
Наверно самым быстрым из примитивных будет следующий код на С++
#include <iostream>
#include <string>
#include <tr1/unordered_set>

using std::string;

int main() {
  string str;
  std::tr1::unordered_set<string> set;
  while (getline(std::cin, str))
    if (set.insert(str).second)
      std::cout<<str<<std::endl;
}
Можно сильно быстрее, если добавить свой аллокатор для строк и для unordered_set.
Ну и set можно хранить не копии а указатели, как это происходит в python || perl. Вудет ещё быстрей. :)

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: Найти одинаковые строки в файле!
« Ответ #33 : 11 Марта 2009, 11:43:48 »
Мне кажется, что если спрашивают на форуме по линуксу решение какой-то задачи, то не надо давать решение на перле, питоне, руби и хз чем.
Не согласен. Пусть расцветают все цветы, а время покажет, ху из ху.
Не хватает только java.
cat file | sort | uniq
Чуть-чуть полегче.
cat file.in | sort -mu > file.out

PS. Мне понравилась эта тема, что даже зарегистрировался.
 Еще лаконичнее
sort -mu file.in > file.out

Это без пипа, но я не уверен, что будет одназначно быстрее (т.к. буферизация м.б. исчезнет).
Проверять надо на длинных файлах.
Могу предложить еще несколько тем.
1. Поиск текстового фрагмента в каталоге.
2. Замена текстового фрагмента в файле.
Это для затравки.
« Последнее редактирование: 12 Марта 2009, 08:12:53 от alexander.pronin »

 

Страница сгенерирована за 0.015 секунд. Запросов: 22.