Cara menghapus baris tertentu dari file menggunakan sed

Pada kesempatan tertentu kita perlu menghapus baris tertentu dari satu atau beberapa file, misalnya, telah terjadi pada saya bahwa saya memiliki seluruh daftar file dan saya perlu menghapus baris # 27 dari semua ini (baris # 27 adalah dari ACL , norma, aturan, konfigurasi), apakah saya dapat mengedit file demi file atau saya hanya dapat mencapai apa yang saya butuhkan menggunakan perintah sed dan skrip bash (opsional).

Tapi, mari kita coba satu file yang agak sederhana.

Kami memiliki file tersebut distro-deb.txt yang berisi ini:

debian

kubuntu

archlinux

solus

permen

Artinya, file tersebut distro-deb.txt di mana kita akan meletakkan distro berbasis Debian, tetapi di sana kita melihat bahwa di baris # 3 ada "archlinux", distro yang jelas tidak ada hubungannya dengan Debian, jadi kita harus menghilangkan baris itu. Untuk menghilangkan baris # 3 dari file itu kami akan meletakkan yang berikut ini:

sed "3d" distros-deb.txt > distros-deb-ok.txt

Menjelaskan baris ini agak mudah, dengan haus "3d" kami menunjukkan bahwa kami akan menghapus baris # 3, dengan distro-deb.txt Kami menunjukkan file apa yang akan dikerjakan, yaitu, hapus baris # 3 dari file ini, hingga di sini jika kami menekan Enter maka akan menunjukkan kepada kami apa yang kami inginkan tetapi di terminal, jadi dengan > distros-deb-ok.txt kami menunjukkan bahwa alih-alih menampilkan hasil di terminal, melainkan meletakkannya di file dengan nama ini.

Sederhana apa?

Selain itu, kita dapat menghindari penggunaan > distros-deb-ok.txt menggunakan parameter yang tepat dari sed, parameternya -i

Artinya, jika kita ingin menghapus baris dari file dan menyimpannya dengan nama yang sama (dan bukan di file lain), cukup tambahkan parameter -i :

sed -i "3d" distros-deb.txt

Ini akan menghapus baris # 3 dari distros-deb.txt dan menyimpannya.

Bagaimana jika saya menginginkan serangkaian baris, yaitu menghapus baris # 3 tetapi juga # 4 dan # 5? Untuk mencapai ini kami menempatkan rentang dari 3 hingga 5, yaitu:

sed -i "3,5d" distros-deb.txt

Dan itu hanya akan menunjukkan kepada saya debian dan kubuntu 

Jadi bagaimana jika saya ingin menghapus dari baris 2 ke baris terakhir, ketika saya tidak tahu total barisnya?

Cukup gunakan simbol dolar - »$

sed -i "2,$d" distros-deb.txt

Jika Anda ingin menghilangkan dari baris pertama ke # 4 maka kami cukup memasukkan nilai 1 di awal:

sed -i "1,4d" distros-deb.txt

Ini telah menjadi segalanya, tip yang sangat berguna ketika Anda ingin membuat skrip bash untuk mengotomatiskan tugas dan Anda perlu memodifikasi dan menghilangkan baris file konfigurasi, untuk memodifikasi dapat kita gunakan sed o perl, serta untuk menghilangkannya kita sudah tahu cara melakukannya dengan sed 

salam