Làm thế nào tôi có thể chỉnh sửa một tập tin lớn tại chỗ?


18

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 nghĩ rằng vimcó giới hạn 4G (có thể sai) nhưng tôi không nghĩ nó có tại chỗ (có thể sai).
xenoterracide

1
@xenoterracide: Tôi không có vim ở đây :-( và vi đưa ra lỗi "Tệp Tmp quá lớn"
Hemant

1
@Hernant: Thông báo đó cho bạn biết tất cả những gì bạn cần biết về chỉnh sửa tại chỗ: vi đang cố gắng sao chép nó sang / tmp để làm việc. Tôi nghĩ rằng vim sẽ làm điều tương tự, và nó muốn tạo một bản sao lưu trong cùng một thư mục.
David Thornley

Câu trả lời:


10

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.



6

Bạn có thể sử dụng dd chẳng hạn:

dd if=yourfile of=outname bs=4k count=thefirstX4kb

1
Cám ơn phản hồi của bạn. Tôi thích chỉnh sửa tập tin tại chỗ để tiết kiệm dung lượng đĩa. Nếu không có gì giúp tôi sẽ sử dụng dd :-).
Hemant

6

Sử dụng một công cụ cho phép bạn truy cập vào truncatecuộ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ì ddthậ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

1

Bạn có thể sử dụng splithoặc ed, awkhoặc bất kỳ ngôn ngữ lập trình.


Cám ơn phản hồi của bạn. Tôi thích chỉnh sửa tập tin tại chỗ để tiết kiệm dung lượng đĩa và bộ nhớ.
Hemant
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.