Bagaimana saya bisa mengedit file besar di tempatnya?


18

Saya memiliki beberapa file berukuran masing-masing> 1 GB. Saya perlu menghapus beberapa byte terakhir dari file. Bagaimana saya bisa melakukannya? Saya lebih suka mengedit file di tempat untuk menghemat ruang disk.

Saya menggunakan HP-UX.


Saya pikir vimmemiliki batas 4G (bisa salah) tetapi saya tidak berpikir itu melakukannya di tempat (bisa salah).
xenoterracide

1
@ xenoterracide: Saya tidak punya vim di sini :-( dan vi memberikan Kesalahan "Tmp file terlalu besar".
Hemant

1
@Hernant: Pesan itu memberi tahu Anda semua yang perlu Anda ketahui tentang pengeditan di tempat: vi sedang mencoba menyalinnya ke / tmp untuk dikerjakan. Saya pikir vim akan melakukan hal yang sama, dan memang ingin membuat cadangan di direktori yang sama.
David Thornley

Jawaban:


10

Coba gunakan hexedit Saya belum mencobanya di HP-UX tetapi harus bekerja. Ini memungkinkan Anda untuk pindah ke lokasi dalam file dan memotong. Saya cukup yakin bahwa itu tidak membaca seluruh file tetapi hanya mencari lokasi yang sesuai untuk ditampilkan.

Penggunaannya cukup sederhana setelah Anda meluncurkannya, tombol panah memungkinkan Anda untuk bergerak. F1 memberi bantuan. Ctrl-G pindah ke lokasi dalam file (petunjuk: untuk pindah ke akhir gunakan ukuran file dari baris bawah tampilan). Posisikan kursor pada byte pertama yang ingin Anda potong lalu tekan Escape T setelah Anda mengonfirmasi pemotongan akan dilakukan. Ctrl-x keluar.



6

Anda dapat menggunakan dd misalnya:

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

1
Terimakasih atas tanggapan Anda. Saya lebih suka mengedit file di tempat untuk menghemat ruang disk. Jika tidak ada yang membantu saya akan menggunakan dd :-).
Hemant

6

Gunakan alat yang memberi Anda akses ke truncatepanggilan sistem. Anda dapat melakukannya hanya dengan alat POSIX. Peringatan, diketik dalam browser; berhati-hatilah karena ddkesalahan yang bahkan lebih tidak bisa dimaafkan daripada perintah unix yang biasa. 123456 adalah jumlah byte yang harus disimpan.

dd if=/dev/null of=/file/to/truncate seek=1 bs=123456

Versi Perl jauh lebih mudah dibaca:

perl -e 'truncate "$ARGV[0]", 123456 or die $!' /file/to/truncate

1

Anda dapat menggunakan splitatau ed, awkatau bahasa pemrograman apa pun.


Terimakasih atas tanggapan Anda. Saya lebih suka mengedit file di tempat untuk menghemat ruang disk dan memori.
Hemant
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.