Mam kilka plików o rozmiarze> 1 GB każdy. Muszę usunąć kilka ostatnich bajtów z plików. Jak mogę to zrobić? Wolę edytować plik w miejscu, aby zaoszczędzić miejsce na dysku.
Jestem na HP-UX.
Mam kilka plików o rozmiarze> 1 GB każdy. Muszę usunąć kilka ostatnich bajtów z plików. Jak mogę to zrobić? Wolę edytować plik w miejscu, aby zaoszczędzić miejsce na dysku.
Jestem na HP-UX.
Odpowiedzi:
Spróbuj użyć hexedit Nie próbowałem tego na HP-UX, ale powinno działać. Umożliwia przejście do lokalizacji w pliku i obcięcie. Jestem prawie pewien, że nie odczytuje całego pliku, ale po prostu szuka odpowiedniej lokalizacji do wyświetlenia.
Użycie jest dość proste, gdy go uruchomisz, klawisze strzałek pozwalają się poruszać. F1 pomaga. Ctrl-G przenosi się do lokalizacji w pliku (wskazówka: aby przejść do końca, użyj rozmiaru pliku z dolnego wiersza wyświetlacza). Ustaw kursor na pierwszym bajcie, który chcesz obciąć, a następnie naciśnij klawisz Escape T po potwierdzeniu, że obcięcie zostanie wykonane. Ctrl-x kończy pracę.
Wytnij 2 kilobajty z końca pliku:
truncate -s-2K file
Możesz użyć dd na przykład:
dd if=yourfile of=outname bs=4k count=thefirstX4kb
Użyj narzędzia, które daje dostęp do truncate
wywołania systemowego. Możesz to zrobić tylko za pomocą narzędzi POSIX. Ostrzeżenie wpisane w przeglądarce; zachowaj szczególną ostrożność, ponieważ dd
jest to bardziej bezlitosne błędy niż zwykłe polecenie unix. 123456 to liczba bajtów do zachowania.
dd if=/dev/null of=/file/to/truncate seek=1 bs=123456
Wersja Perla jest znacznie bardziej czytelna:
perl -e 'truncate "$ARGV[0]", 123456 or die $!' /file/to/truncate
Możesz użyć split
lub ed
, awk
lub dowolnego języka programowania.
vim
ma limit 4G (może być źle), ale nie sądzę, że to robi na miejscu (może być źle).