1

У меня есть большой файл, который содержит записи в мультилинии. например:

domain1 NS ns1
domain1 NS ns2
domain1 NS ns3
domain2 NS dnsx

Какой может быть самый быстрый способ создания CSV формы

domain1,ns1,ns2,ns3
domain2, dnsx

Я пробовал скрипты php и groovy, но время загрузки процессора слишком велико для файла (чтения) из файла размером 1 Гб (и последующей записи в файл csv).

Я думаю, что должен быть лучший программный подход, чем то, что я делаю. В основном я создаю список / массив для хранения записей и проверяю по последнему элементу, найден ли тот же домен в текущей проверяемой строке.

PS Упоминается groovy/php, но ответ может не иметь никакого отношения к этим конкретным языкам сценариев.

1 ответ1

1

Предполагая, что все записи с одним и тем же доменом сгруппированы, эта awk-программа будет занимать очень мало места (не может сказать, какой будет загрузка процессора)

awk '
    $1 != domain {
        if (domain) print ""
        printf "%s", $1
        domain = $1
    } 
    {printf ",%s", $3} 
    END {print ""}
' file

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .