Edytor tekstu oparty na dysku do edycji pliku większego niż pamięć [zamknięte]

1

Korzystam z Ubuntu i szukam dobrego edytora do edycji pliku o wielkości> 4 GB. Muszę tylko umieścić treść na końcu i na początku pliku. Chyba mógłbym użyć czegoś takiego

cat "text to add" >> huge_file

Aby dołączyć do pliku. Czy to jest droga do przejścia? Co z przygotowaniem? Zasadniczo, jaka jest najlepsza trasa, jeśli chcę edytować gdzieś pośrodku?

Wypróbowałem VIM i niestety zawodzi. Zakładam, że emacs i nano byłyby jeszcze gorsze. Co jeszcze tu jest? Zakładam, że aby osiągnąć to, czego szukam, edytor musiałby zostać specjalnie zaprojektowany do tego celu, nie przechowując całej zawartości pliku w pamięci.

Gordon
źródło
Jestem ciekawy, dlaczego masz tak dużo danych w pliku tekstowym. Jak zauważyłeś, nie jest to najlepszy format do zarządzania dużymi danymi.
Isaac Rabinovitch,

Odpowiedzi:

4

To jest częściowa odpowiedź, ale tak, jeśli po prostu dołączasz, użyłbym:

cat extra.txt >> huge_file.txt

lub

echo "Single line to add" >> huge_file.txt

W ramach przygotowań zrobiłbym:

cat extra.txt huge_file.txt > huge_file_new.txt
Jarvin
źródło
Właśnie tego użyłem, ale byłoby miło, gdyby istniała bardziej niezawodna metoda.
Gordon,
2

Jeśli wszystko, czego potrzebujesz, to dołączyć, to >>huge_filejest znacznie lepsze niż to, co może zrobić każdy edytor, ponieważ nie dotknie istniejących danych. Wstawianie danych do pliku wymaga przepisania wszystkiego po punkcie wstawienia, więc będzie wolno, nawet przy użyciu odpowiednich narzędzi.

W vimie wypróbuj wtyczkę LargeFile .

Bvi to wersja vi skierowana do plików binarnych. Może edytować wycinek pliku (tj. Od pozycji x do pozycji y).

Strona porównanie redaktor wikipedia ma kolumnę z dużych plików. Sytuacja jest dość ponura.

Gilles
źródło
Vim powinien mieć możliwość obsługi plików o wielkości do 2 Gb w systemie 32-bitowym. Myślę, że strona porównująca podaje ją jako 2 ^ 32 (4 Gb), nie jestem pewien, czy jest to poprawne we wszystkich wersjach vima.
odbywają się
Obsługa AFAIK dla plików powyżej 2 GB w systemie 32-bitowym jest nowością w niedługo wydanym vimie 7.3 ( poprawka 7.2.413 ), chociaż nie wiem, co możesz zrobić z plikiem, który nie pasuje w przestrzeni adresowej procesu.
Gilles,
1

Ultraedit to jedyny edytor, który robi to dobrze. Wolałbym także OSS. Jeden nie istnieje. Jestem szczególnie zaskoczony, że to nie jest zdolność vi ... to taki szwajcarski scyzoryk.

erik
źródło
0

UltraEdit jest w stanie edytować plik bez ładowania go do pamięci. Nie przetestowałem jeszcze jego wersji dla systemu Linux i nie przetestowałem też pliku o wielkości> 4 GB, więc nie mogę dać żadnych gwarancji, ale edytowałem kilka dużych plików (~ 1,5 GB) w wersji dla systemu Windows (i dawno temu też ).

DevSolar
źródło
Wolę OSS, jeśli to możliwe.
Gordon
0

Właśnie dlatego, że znalazłem to za pośrednictwem wyszukiwarki Google, szukając czegoś podobnego, to kolejna metoda, którą znalazłem.

Sytuacja: masz plik o pojemności 4,0 GB i musisz edytować numer linii 120.

Rozwiązanie: używając głowy i ogona, aby uzyskać wszystko oprócz linii, którą chcesz edytować.

# cat origfile.txt 
 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
# head -n 5 origfile.txt >> newfile.txt
# echo "line 6" >> newfile.txt 
# tail -n +7 origfile.txt >> newfile.txt 
# cat newfile.txt 
 1
 2
 3
 4
 5
 line 6
 7
 8
 9
 10

Z mojego ogona testowego nie załaduje całego pliku do pamięci naraz.

madflojo
źródło