Czy ktoś wie o nieliniowym narzędziu służącym do „binarnego” wyszukiwania / zastępowania ciągów w sposób zapewniający oszczędność pamięci? Zobacz też to pytanie .
Mam plik tekstowy + 2 GB, który chciałbym przetworzyć podobnie do tego, co wygląda na to, że:
sed -e 's/>\n/>/g'
Oznacza to, że chcę usunąć wszystkie nowe wiersze, które występują po >
, ale nigdzie indziej, więc to wyklucza tr -d
.
To polecenie (otrzymane z odpowiedzi na podobne pytanie ) kończy się niepowodzeniem couldn't re-allocate memory
:
sed --unbuffered ':a;N;$!ba;s/>\n/>/g'
Czy są jakieś inne metody bez uciekania się do C? Nienawidzę Perla, ale jestem gotów zrobić wyjątek w tym przypadku :-)
Nie wiem na pewno żadnego znaku, który nie występuje w danych, więc tymczasowe zastąpienie \n
go innym znakiem jest czymś, czego chciałbym uniknąć, jeśli to możliwe.
Jakieś dobre pomysły, ktoś?
--unbuffered
$!
zrobić?
$!
jest. Spodziewam się, że będzie to wymagało dużo pamięci.
sed
nie jest właściwym narzędziem w tym przypadku.
--unbuffered
?