Próbowałem otworzyć ogromny (~ 2 GB) plik w VIM, ale się zaciął. Właściwie nie muszę edytować pliku, po prostu sprawnie skaczę.
Jak mogę pracować z bardzo dużymi plikami w VIM?
vim
large-files
hoju
źródło
źródło
:set binary
najpierw ...Odpowiedzi:
Miałem dziś do edycji plik 12 GB. Wtyczka vim LargeFile nie działała dla mnie. Nadal zużywał całą moją pamięć, a następnie wyświetlał komunikat o błędzie :-(. Nie mogłem też użyć hexedit, ponieważ nie może niczego wstawić, po prostu nadpisać. Oto alternatywne podejście:
Podziel plik, edytuj części, a następnie ponownie go połączysz. Jednak nadal potrzebujesz dwa razy więcej miejsca na dysku.
Wyszukaj coś otaczającego linię, którą chcesz edytować:
Wyodrębnij ten zakres pliku. Powiedz, że wiersze, które chcesz edytować, znajdują się w wierszach 4 i 5. Następnie wykonaj:
-n
opcja jest wymagana do powstrzymania domyślnego zachowania seda podczas wypisywania wszystkiego4,5p
drukuje linie 4 i 55q
przerywa sed po przetwarzaniu linii 5Edytuj
SMALLPART
za pomocą swojego ulubionego edytora.Połącz plik:
HUGEFILE.new
będzie teraz edytowanym plikiem, możesz usunąć oryginałHUGEFILE
.źródło
To powracające pytanie od wielu lat. (Liczby się zmieniają, ale koncepcja jest taka sama: jak przeglądać lub edytować pliki, które są większe niż pamięć?)
Oczywiście
more
lubless
są dobrym podejściem do zwykłego czytania plików -less
nawet oferująvi
takie skróty klawiszowe do przewijania i wyszukiwania.Freshmeat szukaj w „dużych plików” sugeruje, że dwie redaktorzy będą szczególnie dostosowane do Twoich potrzeb.
Jednym z nich byłby: lfhex ... duży edytor szesnastkowy plików (zależny od Qt). To oczywiście pociąga za sobą użycie GUI.
Inny wydaje się być odpowiedni do użycia na konsoli: hed ... i twierdzi, że ma
vim
interfejs podobny do a (w tymex
tryb?).Jestem pewien, że widziałem inne edytory dla systemu Linux / UNIX, które były w stanie przeglądać pliki bez ładowania ich całości do pamięci. Jednak nie pamiętam żadnego z ich nazwisk. Robię tę odpowiedź jako wpis typu "wiki", aby zachęcić innych do dodawania swoich linków do takich edytorów. (Tak, znam sposoby obejścia tego problemu za pomocą
split
icat
; ale myślę o edytorach, zwłaszcza edytorach konsol / curses, które mogą się z tego obejść i zaoszczędzić nam czasu / opóźnień i narzutu miejsca na dysku, które pociągają za sobą takie podejścia) .źródło
Ponieważ nie musisz faktycznie edytować pliku:
view
(lubvim -R
) powinien działać dość dobrze na dużych plikach.more
lubless
źródło
view
(właśnie wypróbowane i zmierzone w czasie). To prawda, to nie jest dokładnie natychmiastowe, ale działa.Napisałem mały skrypt na podstawie odpowiedzi Floriana, który używa nano (mój ulubiony edytor):
Użyj tego w ten sposób:
W tym przykładzie nano otworzy linie od 3 do 8, możesz je edytować, a kiedy zapiszesz i wyjdziesz, te linie w ogromnym pliku zostaną automatycznie nadpisane twoimi zapisanymi liniami.
źródło
Miałem ten sam problem, ale był to zrzut mysql o pojemności 300 GB i chciałem się go pozbyć
DROP
i zmienićCREATE TABLE
na,CREATE TABLE IF NOT EXISTS
więc nie chciałem uruchamiać dwóch wywołańsed
. Napisałem ten szybki skrypt Ruby, aby oszukać plik z tymi zmianami:Wywołane jak
źródło
chmod +x mreplace.rb
, możesz też po prosturuby mreplace.rb ..
W przypadku dużych jednowierszowych (drukuje znaki od
1
do99
):źródło
Jest już późno, ale jeśli chcesz po prostu nawigować po pliku bez jego edycji,
cat
możesz też wykonać to zadanie.lub alternatywnie proste:
źródło
cat
tingowanie pliku w pierwszej kolejności jest szalenie głupie, ponieważ oznacza to, że plik byłby w całości w pamięci (więcless
można przeszukać plik) lub nie można go w ogóle znaleźć;cat
po prostu daje statyczny strumień wyjściowy.emacs działa bardzo dobrze z plikami do 100 megabajtów, użyłem go na plikach dziennika bez większych problemów.
Ale generalnie, kiedy mam jakieś zadanie analityczne, uważam, że napisanie skryptu w Perlu jest lepszym wyborem.
źródło
Stara nić. Niemniej jednak (kalambur :)).
less działa wydajnie, jeśli nie chcesz edytować i po prostu się rozejrzyj, co ma miejsce w przypadku sprawdzania dużych plików dziennika.
Szukaj w less działa jak vi
Najlepsze jest to, że jest domyślnie dostępny w większości dystrybucji. Więc nie będzie problemu również dla środowiska produkcyjnego.
źródło
to jest stare, ale użyj nano, vim lub gvim
źródło