Надо обработать 160кк строк

Тема в разделе "PHP Pro", создана пользователем bob, 31 янв 2013.

Статус темы:
Закрыта.
  1. bob

    bob

    Регистр.:
    30 авг 2011
    Сообщения:
    155
    Симпатии:
    45
    Надо обработать 160кк строк вида:

    т.е. убрать все что после первого пробела
    у меня есть регулярка, но на таких объемах она не подходит
    помогите плиз
     
  2. recasher2k12

    recasher2k12

    Регистр.:
    19 фев 2012
    Сообщения:
    156
    Симпатии:
    78
    Регулярка не нужна. По-экономьте память. Также необходимо использовать бинарно-безопасное чтение. и если запускать не через CLI, а браузер, возможно, придется увеличить максимальное время работы скрипта.
    PHP:
    <?php
    $readhandle 
    = @fopen("/tmp/inputfile.txt""r");
    $writehandle = @fopen("/tmp/outputfile.txt""w");
    if (
    $readhandle && $writehandle) {
        while ((
    $buffer fgets($readhandle)) !== false) {
            
    //echo $buffer;
            
    $writeBuffer substr($buffer0strpos($buffer' ')). "\r\n";
            
    fwrite($writehandle$writeBuffer);
        }
        if (!
    feof($readhandle)) {
            echo 
    "Error: unexpected fgets() fail\n";
        }
        
    fclose($readhandle);
        
    fclose($writehandle);
    }
    ?>
    Исправлено. на 6й строке в конце
    PHP:
     "\r\n"
     
    andkab, lapac, latteo и ещё 1-му нравится это.
  3. nnmkayf

    nnmkayf

    Регистр.:
    25 июл 2007
    Сообщения:
    153
    Симпатии:
    98
    Если у вас есть юникс, а судя по вопросу есть, можно значительно проще.

    в командной строке
    cut -f1 -d" " a.txt
    где a.txt - файлик с DNS записями
     
    andkab, roddik, lonejan и ещё 1-му нравится это.
Статус темы:
Закрыта.