Кто-нибудь знает инструмент, не основанный на строках, для «бинарного» поиска / замены строк в некотором смысле эффективным способом памяти? Смотрите и этот вопрос .
У меня есть текстовый файл + 2 ГБ, который я хотел бы обработать аналогично тому, как это выглядит:
sed -e 's/>\n/>/g'
Это означает, что я хочу удалить все новые строки, которые появляются после >, но нигде больше, так что это исключает tr -d.
Эта команда (которую я получил из ответа на аналогичный вопрос ) не выполняется с couldn't re-allocate memory:
sed --unbuffered ':a;N;$!ba;s/>\n/>/g'
Итак, есть ли другие методы, не прибегая к C? Я ненавижу Perl, но готов сделать исключение в этом случае :-)
Я точно не знаю ни одного символа, который не встречается в данных, поэтому временную замену \nдругим символом я бы хотел избежать, если это возможно.
Любые хорошие идеи, кто-нибудь?
--unbufferedпамятью или без
$!?
$!хотя я не знаю, что это такое. Это Я ожидаю , что потребуется МНОГО памяти.
sedэто не правильный инструмент в этом случае.
--unbuffered?