Tôi có một vài tệp có kích thước> 1 GB mỗi tệp. Tôi cần loại bỏ vài byte cuối cùng khỏi các tập tin. Tôi làm nó như thế nào? Tôi thích chỉnh sửa tập tin tại chỗ để tiết kiệm dung lượng đĩa.
Tôi đang dùng HP-UX.
Tôi có một vài tệp có kích thước> 1 GB mỗi tệp. Tôi cần loại bỏ vài byte cuối cùng khỏi các tập tin. Tôi làm nó như thế nào? Tôi thích chỉnh sửa tập tin tại chỗ để tiết kiệm dung lượng đĩa.
Tôi đang dùng HP-UX.
Câu trả lời:
Hãy thử sử dụng hexedit Tôi chưa thử nó trên HP-UX nhưng nó vẫn hoạt động. Nó cho phép bạn di chuyển đến một vị trí trong một tập tin và cắt ngắn. Tôi khá chắc chắn rằng nó không đọc toàn bộ tập tin mà chỉ tìm vị trí thích hợp để hiển thị.
Cách sử dụng khá đơn giản một khi bạn đã khởi chạy nó, các phím mũi tên cho phép bạn di chuyển xung quanh. F1 giúp đỡ. Ctrl-G di chuyển đến một vị trí trong tệp (gợi ý: để di chuyển đến cuối sử dụng kích thước của tệp từ hàng dưới cùng của màn hình). Định vị con trỏ trên byte đầu tiên mà bạn muốn cắt bớt và sau đó nhấn Escape T sau khi bạn xác nhận việc cắt ngắn sẽ được thực hiện. Ctrl-x thoát.
Cắt 2 kilobyte từ cuối tệp:
truncate -s-2K file
Bạn có thể sử dụng dd chẳng hạn:
dd if=yourfile of=outname bs=4k count=thefirstX4kb
Sử dụng một công cụ cho phép bạn truy cập vào truncate
cuộc gọi hệ thống. Bạn có thể làm điều đó chỉ với các công cụ POSIX. Cảnh báo, gõ vào trình duyệt; đặc biệt cẩn thận vì dd
thậm chí còn không tha thứ cho các lỗi hơn so với lệnh unix thông thường. 123456 là số byte cần giữ.
dd if=/dev/null of=/file/to/truncate seek=1 bs=123456
Một phiên bản Perl dễ đọc hơn nhiều:
perl -e 'truncate "$ARGV[0]", 123456 or die $!' /file/to/truncate
Bạn có thể sử dụng split
hoặc ed
, awk
hoặc bất kỳ ngôn ngữ lập trình.
vim
có giới hạn 4G (có thể sai) nhưng tôi không nghĩ nó có tại chỗ (có thể sai).