Saya memiliki file teks yang sangat besar, terlalu besar untuk disimpan dalam memori. Yang perlu saya lakukan dengan file teks ini adalah mengedit baris pertama (ini file CSV dan saya perlu mengubah judul).
Apakah ada cara sederhana yang bisa saya lakukan dalam bash?
edlin
untuk ms-dos ataued
untuk Unix tampaknya tidak memiliki masalah ini tetapi di mana hanya editor baris ... RAM di kali ini adalah hal yang langka dan berharga dan ukuran file dalam Gigabytes adalah sesuatu yang mustahil untuk dipercaya! ;)ed
!!! tetapi akan cocok untuk kasus ini (tidak yakin bisa menangani file dengan ukuran ini ...)Jawaban:
Anda dapat menggunakan
less
untuk melihat apa yang ingin Anda edit dan gunakansed
untuk melakukan perubahan. Dengan cara ini Anda mengedit tanpa memuat seluruh file.Cara lain adalah dengan membagi file, mengedit, dan bergabung lagi:
sumber
Jika modifikasi Anda mengubah panjang baris, seluruh file perlu ditulis ulang, lihat misalnya diskusi ini di SO. Anda mungkin harus mempertimbangkan untuk menyimpan data ke database.
Dengan mengingat hal itu, Anda dapat melakukan streaming mengedit file dengan sed. Untuk mengganti baris pertama, lakukan sesuatu seperti ini (GNU sed):
sumber