Ho un enorme (70 GB), una riga , file di testo e voglio sostituire una stringa (token) in esso. Voglio sostituire il token <unk>
, con un altro token fittizio ( problema con i guanti ).
Ho provato sed
:
sed 's/<unk>/<raw_unk>/g' < corpus.txt > corpus.txt.new
ma il file di output corpus.txt.new
ha zero byte!
Ho anche provato a usare perl:
perl -pe 's/<unk>/<raw_unk>/g' < corpus.txt > corpus.txt.new
ma ho riscontrato un errore di memoria esaurita.
Per file più piccoli, funzionano entrambi i comandi precedenti.
Come posso sostituire una stringa è un tale file? Questa è una domanda correlata, ma nessuna delle risposte ha funzionato per me.
Modifica : che ne dici di dividere il file in blocchi di 10 GB (o altro) ciascuno e applicarlo sed
su ognuno di essi e poi unirli con cat
? Ha senso? C'è una soluzione più elegante?
split
con l' -b
opzione che definisce le dimensioni dei file di blocchi in byte. Elaborare ciascuno a sua volta usando sed
e riassemblare. Esiste il rischio che <unk>
possa essere diviso in due file e non verrà trovato ...