Кто-нибудь знает инструмент, не основанный на строках, для «бинарного» поиска / замены строк в некотором смысле эффективным способом памяти? Смотрите и этот вопрос .
У меня есть текстовый файл + 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
?