2013-06-03 8 views
5

У меня есть текстовый файл размером 300 ГБ, содержащий данные геномики с более чем 250 тыс. Записей. Есть некоторые записи с плохими данными, и наша программа геномики «Popoolution» позволяет нам прокомментировать «плохие» записи со звездочкой. Наша проблема заключается в том, что мы не можем найти текстовый редактор, который будет загружать данные, чтобы мы могли комментировать плохие записи. Какие-либо предложения? У нас есть как Windows, так и Linux.Как редактировать текстовый файл 300 ГБ (данные геномики)?

UPDATE: Больше информации

Программа Popoolution (https://code.google.com/p/popoolation/) падает, когда он достигает «плохой» запись дает нам номер строки, мы можем закомментируйте. В частности, мы получаем сообщение от Perl, в котором говорится: «F # €% & Леса». В руководстве говорится, что мы можем просто использовать звездочку, чтобы прокомментировать неудачную строку. К сожалению, нам придется многократно повторять этот процесс ...

Еще одна мысль ... Есть ли подход, который позволит нам добавить звездочку к строке, не открывая сразу весь текстовый файл. Это может быть очень полезно, учитывая, что нам придется повторять процесс неизвестное количество раз.

+10

Зачем вам нужно его открывать в текстовом редакторе? Наверняка вы не будете комментировать все 250 тыс. Записей вручную? Посмотрите на использование awk или sed. –

+0

Найдите шаблон для этих плохих записей и решите проблему с awk или sed, как указывает @Joshua. 250 тыс. Записей, которые нужно проверить вручную, означают всю жизнь. – fedorqui

+0

Мы попытались загрузить файл в Notepad ++ и потребовалось более 24 часов для загрузки и в основном использовали. –

ответ

11

На основе вашего обновления:

Еще одна мысль ... Есть ли подход, который позволит нам добавить звездочку в строку, не открывая сразу весь текстовый файл. Это может быть очень полезно, учитывая, что нам нужно будет повторить процесс неизвестным числом раз.

Здесь у вас есть такой подход: Если вы знаете номер строки, вы можете добавить звездочку в начале этой строки, говоря:

sed 'LINE_NUMBER s/^/*/' file 

Смотрите пример:

$ cat file 
aa 
bb 
cc 
dd 
ee 
$ sed '3 s/^/*/' file 
aa 
bb 
*cc 
dd 
ee 

Если вы добавите -i, файл будет обновлен:

$ sed -i '3 s/^/*/' file 
$ cat file 
aa 
bb 
*cc 
dd 
ee 

Хотя я всегда думаю, что это лучше сделать перенаправление на другой файл

sed '3 s/^/*/' file > new_file 

так, что вы сохраняете нетронутыми исходный файл и сохранить обновленный один в new_file.

4

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

+0

будет «sed» позволяет нам указать номер строки и добавить звездочку? Число строк подсчитывается как «регулярное выражение»? –

6

Если вы хотите, чтобы человек записывал эти записи вручную с помощью текстового редактора, по какой-либо причине вы, вероятно, должны использовать split, чтобы разбить файл на управляемые части.

split -a4 -d -l100000 hugefile.txt part. 

Это разделит файл на части с 100000 строк каждый. Имена файлов будут part.0000, part.0001 и т.д. Затем, после того, как все файлы, которые были отредактированы, вы можете объединить их вместе с cat:

cat part.* > new_hugefile.txt 
4

Основной узор в R, чтобы прочитать данные кусками, редактирования и выписывать

fin = file("fin.txt", "r") 
fout = file("fout.txt", "w") 
while (length(txt <- readLines(fin, n=1000000))) { 
    ## txt is now 1000000 lines, add an asterix to problem lines 
    ## bad = <create logical vector indicating bad lines here> 
    ## txt[bad] = paste0("*", txt[bad]) 
    writeLines(txt, fout) 
} 
close(fin); close(fout) 

Пока не идеально, это работает на Windows (подразумеваемой упоминанием Notepad ++) и на языке, вы, вероятно, знакомы (R). Использование sed (безусловно, соответствующего инструмента в конечном итоге) потребует установки additional software и приближается к скорости с sed.

 Смежные вопросы

  • Нет связанных вопросов^_^