Mam ogromny (70 GB), jeden wiersz , plik tekstowy i chcę w nim zastąpić ciąg (token). Chcę zastąpić token <unk>
innym tokenem zastępczym ( problem z rękawiczkami ).
Próbowałem sed
:
sed 's/<unk>/<raw_unk>/g' < corpus.txt > corpus.txt.new
ale plik wyjściowy corpus.txt.new
ma zero bajtów!
Próbowałem także użyć perla:
perl -pe 's/<unk>/<raw_unk>/g' < corpus.txt > corpus.txt.new
ale wystąpił błąd braku pamięci.
W przypadku mniejszych plików działają oba powyższe polecenia.
Jak mogę zamienić ciąg znaków na taki plik? To powiązane pytanie, ale żadna z odpowiedzi nie zadziałała dla mnie.
Edycja : Co powiesz na podzielenie pliku na części po 10 GB (lub cokolwiek innego) i zastosowanie sed
do każdego z nich, a następnie scalenie ich cat
? Czy to ma sens? Czy istnieje bardziej eleganckie rozwiązanie?
split
z -b
opcją definiowania wielkości plików porcji w bajtach. Przetwarzaj każdy po kolei za pomocą sed
i ponownie złóż. Istnieje ryzyko, że <unk>
można je podzielić na dwa pliki i nie można ich znaleźć ...