LINUX.ORG.RU

Удаление всех неуникальных строк.


1

2

Есть большой отсортированный текстовый файл, нужно удалить из него все повторяющиеся строки. Например файл aaa aaa bbb bbb ccc fff ddd ddd ddd

В результате должно получиться

ccc fff

Файл 5gb оперативной памяти 1gb. Пожалуйста помогите решить задачу.

Ответ на: комментарий от mix_mix

Но ведь эта команда просто оставит все уникальные строки получиться aaa bbb ccc ddd fff Мне так не надо, мне надо как я описал в первом посте.

lmrazor
() автор топика
Ответ на: комментарий от mix_mix

Его результат будет aaaa bbbb cccc dddd ffff а не то что нужно ТС

qnikst ★★★★★
()
echo -e 'aaa\naaa\nbbb\nbbb\nccc\nfff\nddd\nddd\nddd' |
awk '
BEGIN         {          q=""; w=1       }
$0==q && w==0 {                w=1       }
$0==q         {                     next }
         w==0 { print q; q=$0;      next }
              {          q=$0; w=0;      }
'
anonymous
()

отсортированный текстовый файл

ключ к решению задачи. первый курс?

pef-secure
()
Ответ на: комментарий от pef-secure

потребление памяти проверял?

У uniq? Упоролся что-ли?

bj
()

start(In, Out) ->
  S = self(),
  P = spawn_link(fun() -> init(In, Out, S) end),
  receive P -> ok end.

init(In, Out, M) ->
  {ok, F1} = file:open(In, [read]),
  {ok, F2} = file:open(Out, [write]),
  case file:read_line(F1) of
    {ok, L} ->
      loop(F1, L, first, F2, M);
    _Any ->
      M ! self()
  end.

loop(In, L, first, Out, M) ->
  case file:read_line(In) of
    {ok, L} ->
      loop(In, L, multi, Out, M);
    {ok, L2} ->
      file:write(Out, L),
      loop(In, L2, first, Out, M);
    _Any ->
      file:write(Out, L),
      M ! self()
  end;
loop(In, L, multi, Out, M) ->
  case file:read_line(In) of
    {ok, L} ->
      loop(In, L, multi, Out, M);
    {ok, L2} ->
      loop(In, L2, first, Out, M);
    _Any ->
      M ! self()
  end.
nanoolinux ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.