Tampilkan Navigasi Ponsel

Selasa, 21 Februari 2017

Unix: Cara menghapus baris pertama dari file besar

Habib bin Hilal - 12.06
Hari ini saya memperoleh masalah dengan salah satu berkas file dengan ukuran cukup besar, kisaran Gb. Ada kesalahan pada berkas besar tersebut, yaitu ada 1 baris yang tidak seharusnya muncul di urutan pertama. Meskipun hanya 1 baris yang salah, untuk menghapus baris tersebut tidaklah mudah.

Sekilas, pemecahan masalah tersebut gampang: buka filenya, delete atau hapus baris pertama, dan simpan kembali. Ternyata tidak semudah itu. Membuka berkas ukuran gigabyte akan memerlukan waktu sangat lama dan mungkin membuat crash komputer.

Solusinya adalah menggunakan program bawaan pada sistem operasi Unix, atau biasa dikenal dengan 'bash script' seperti sed atau tail.

sed -i -e "1d" $FILE

Script, atau command di atas cukup efektif untuk membuang baris pertama (parameter "1d") dari berkas $FILE secara langsung (parameter -i).

Ada alternatif cara menghapus baris pertama yang lebih cepat dari command di atas dengan menggunakan tail.

tail -n +2 "$FILE"

Parameter -n pada tail memberi perintah untuk melihat beberapa baris terakhir suatu berkas. Dengan memasukkan tanda plus, tail akan menampilkan semua baris kecuali baris x-1 yang pertama. Perintah tail -n +1 akan menampilkan semua baris dalam berkas.
Mungkin anda akan berusaha menggunakan perintah di bawah ini untuk mengedit file anda:

tail -n +2 "$FILE" > "$FILE"

Itu akan menghasilkan berkas kosong, alias menghapus semua isi berkas anda. Alasannya adalah tanda > akan diksekusi oleh komputer sebelum perintah tail. Shell akan menghapus $FILE sebelum menjalankan tail.

Jika anda ingin menghapus baris pertama, anda harus menggunakan perintah berikut ini:

tail -n +2 "$FILE" > "$FILE.tmp" && mv "$FILE.tmp" "$FILE"


Perintah && akan menjamin bahwa berkas tidak diganti jika ada yang tidak beres saat menjalankan perintah sebelumnya.
Selanjutnya
Sebelumnya
Artikel Pilihan