Помогите кто может((( дублированные строки

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by starkey, 26 May 2009.

  1. starkey

    starkey New Member

    Joined:
    27 Sep 2008
    Messages:
    9
    Likes Received:
    1
    Reputations:
    -5
    Добрый вечер программисты Antichat'a кто может помочь, просьба откликнуться.. =((

    В общем вроде это не сложно =((

    Можете ли вы написать утилиты которая удаляла бы дублированные ссылки??

    Пример типо:

    Строка.ру
    Строка2.ру
    Строка.ру

    Нужно чтобы эти строки Строка.ру вообще удалялись, такое возможно?? помогите плс((((
     
  2. login999

    login999 Elder - Старейшина

    Joined:
    12 Jun 2008
    Messages:
    491
    Likes Received:
    280
    Reputations:
    92
    Code:
    #!usr/bin/env python
    with open("all.txt") as input_:
        with open("out.txt", "a") as out:
            for x in set(input_.readlines()):
                out.write(x)
    
    Дерьмовый код, но для срочных операций сгодится
    Нацарапал за 30 секунд :) Написан на Python2.6 (python.org)
    Удали только ЧЕТКИЕ дубли из файла all.txt и запишет их в out.txt
    Последняя строка обязательно должна быть пустой (!)
     
  3. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    я помню тут выкладывал чел подобную прогу, а вообще учись пользоватся поиском любым...

    http://www.softforfree.com/programs/text_duplicate_killer-11932.html
     
    _________________________
  4. waik

    waik Elder - Старейшина

    Joined:
    2 Nov 2008
    Messages:
    405
    Likes Received:
    163
    Reputations:
    12
    скрипт с ачата:

    Code:
    #!/usr/bin/perl -w # Удаление повторяющихся строк 
    # by [dei] 
    ############ Config ############# 
    $file = 'log.txt';  
    #############################  
    open(F1,"< $file");  
    @lines = <F1>; 
    close F1;  
    for($i=0;$i<@lines;$i++) {        
          for($i2=$i+1;$i2<@lines;$i2++) {         
                f($lines[$i] eq $lines[$i2]) { splice @lines, $i2, 1;}     
        } 
    }  
    open(F2,"> $file"); 
    print F2 join('',@lines); 
    close F2;
    
     
  5. bons

    bons Elder - Старейшина

    Joined:
    20 Dec 2007
    Messages:
    286
    Likes Received:
    121
    Reputations:
    21
    такие утилиты уже написаны раньше
    если надо оставить только одну копию из нескольких одинаковых строк, то:
    Code:
    sort -u file.txt
    если надо удалить все копии то:
    Code:
    grep -vF "`sort f1.txt | uniq -d`" f1.txt