GNU/Linux >> Belajar Linux >  >> Linux

Cara Menghapus Baris Kosong di File Menggunakan Grep, Sed, dan Awk

Pengguna Linux yang berpengalaman tahu persis seperti apa gangguan baris kosong dalam file yang dapat diproses. Baris kosong/kosong ini tidak hanya menghalangi pemrosesan file tersebut dengan benar, tetapi juga mempersulit program yang sedang berjalan untuk membaca dan menulis file.

Pada lingkungan sistem operasi Linux, dimungkinkan untuk mengimplementasikan beberapa ekspresi manipulasi teks untuk menghilangkan baris kosong/kosong ini dari file. Dalam artikel ini, baris kosong/kosong mengacu pada karakter spasi.

Membuat File dengan Baris Kosong/Kosong di Linux

Kita perlu membuat file referensi dengan beberapa baris kosong/kosong. Nanti akan kami ubah di artikel melalui beberapa teknik yang akan kami bahas. Dari terminal Anda, buat file teks pilihan Anda dengan nama seperti “i_have_blanks ” dan mengisinya dengan beberapa data dan beberapa ruang kosong.

$ nano i_have_blanks.txt
Or
$ vi i_have_blanks.txt

Sepanjang artikel, kami akan mengeluarkan konten file di terminal kami menggunakan perintah cat untuk referensi fleksibel.

$ cat i_have_blanks.txt

Tiga perintah Linux yang akan mendorong kita menuju solusi ideal untuk masalah baris kosong/kosong ini adalah grep, sed, dan awk .

Oleh karena itu, buat tiga salinan i_have_blanks.txt . Anda file dan simpan dengan nama yang berbeda sehingga masing-masing dapat diakomodasi oleh salah satu dari tiga perintah Linux yang disebutkan.

Melalui regex (ekspresi reguler ), kita dapat mengidentifikasi baris kosong dengan karakter standar POSIX “[:space:]” .

Cara Menghapus Baris Kosong/Kosong di File

Dengan pernyataan masalah ini, kami sedang mempertimbangkan penghapusan semua baris kosong/kosong yang ada dari file yang dapat dibaca menggunakan perintah berikut.

1. Hapus Baris Kosong Menggunakan Perintah Grep

Penggunaan kelas karakter steno yang didukung dapat mengurangi perintah grep menjadi sederhana seperti:

$ grep -v '^[[:space:]]*$' i_have_blanks.txt
OR
$ grep '\S' i_have_blanks.txt

Untuk memperbaiki file dengan baris kosong/kosong, output di atas harus melewati file temp sebelum menimpa file asli.

$ grep '\S' i_have_blanks.txt > tmp.txt 
$ mv tmp.txt i_have_blanks.txt
$ cat i_have_blanks.txt

Seperti yang Anda lihat, semua baris kosong yang memberi spasi pada konten file teks ini hilang.

2. Hapus Baris Kosong Menggunakan Perintah Sed

d action dalam perintah memberitahunya untuk menghapus spasi yang ada dari sebuah file. Mekanisme pencocokan dan penghapusan baris kosong perintah ini dapat direpresentasikan dengan cara berikut.

$ sed '/^[[:space:]]*$/d' i_have_blanks_too.txt

Perintah di atas memindai melalui baris file teks untuk karakter yang tidak kosong dan menghapus semua karakter lainnya yang tersisa. Melalui dukungan kelas karakter non-kosong, perintah di atas dapat disederhanakan menjadi berikut:

$ sed '/\S/!d' i_have_blanks_too.txt

Juga, karena dukungan pengeditan di tempat perintah, kami tidak memerlukan file temp untuk menyimpan sementara file kami yang dikonversi sebelum menimpa file teks asli seperti dengan kasus perintah grep. Namun Anda perlu menggunakan perintah ini dengan -i opsi sebagai argumen.

$ sed -i '/\S/!d' i_have_blanks_too.txt i_have_blanks_too.txt 
$ cat i_have_blanks_too.txt

3. Hapus Baris Kosong Menggunakan Perintah Awk

Perintah awk menjalankan pemeriksaan karakter non-putih pada setiap baris file dan hanya mencetaknya jika kondisi ini benar. Fleksibilitas perintah ini hadir dengan berbagai rute implementasi. Solusi langsungnya adalah sebagai berikut:

$ awk '!/^[[:space:]]*$/' i_have_blanks_first.txt

Interpretasi dari perintah di atas sangat mudah, hanya baris file yang tidak ada sebagai spasi putih yang dicetak. Versi yang lebih panjang dari perintah di atas akan terlihat seperti berikut:

$ awk '{ if($0 !~ /^[[:space:]]*$/) }' i_have_blanks_first.txt

Melalui awk dukungan kelas karakter non-kosong, perintah di atas juga dapat direpresentasikan dengan cara berikut:

$ awk -d '/\S/' i_have_blanks_first.txt

-d sebuah opsi memungkinkan awk membuang baris file terakhir pada terminal sistem. Seperti yang Anda lihat, file tidak lagi memiliki spasi.

Ketiganya membahas dan menerapkan solusi untuk menangani baris kosong dari file melalui grep , sed , dan awk perintah akan membawa kita jauh ke dalam implementasi operasi file baca dan tulis yang stabil dan efisien pada sistem Linux.


Linux
  1. Cara Enkripsi dan Dekripsi file/folder di Linux menggunakan GnuPG

  2. Bagaimana Cara Menghapus Beberapa Baris Acak Dari File Teks Menggunakan Sed?

  3. Bagaimana Cara Menghapus N Baris Pertama Dari File Ascii Menggunakan Perintah Shell?

  1. Cara Menemukan dan Menghapus Direktori dan File Kosong di Linux

  2. Bagaimana cara menggabungkan dua file menggunakan AWK?

  3. Temukan dan ganti teks dalam file di antara rentang baris menggunakan sed

  1. Cara Menggunakan Awk dan Ekspresi Reguler untuk Memfilter Teks atau String dalam File

  2. Bagaimana cara mengubah file di tempat menggunakan awk? (seperti halnya sed -i)

  3. Bagaimana cara menghapus file .fuse_hidden*?