Berikut ini adalah beberapa senario di mana membuang ruang kosong mungkin diperlukan:
- Untuk memformat semula kod sumber
- Untuk membersihkan data
- Untuk mempermudah output baris perintah
Adalah mungkin untuk membuang ruang kosong secara manual jika fail yang mengandungi hanya beberapa baris. Tetapi, untuk fail yang mengandungi beratus-ratus baris, maka sukar untuk membuang semua ruang putih secara manual. Terdapat pelbagai alat baris perintah yang tersedia untuk tujuan ini, termasuk sed, awk, cut, dan tr. Di antara alat ini, awk adalah salah satu arahan yang paling kuat.
Apa Yang Sedar?
Awk adalah bahasa skrip yang kuat dan berguna yang digunakan dalam manipulasi teks dan penghasilan laporan. Perintah awk disingkat menggunakan inisial setiap orang (Aho, Weinberger, dan Kernighan) yang mengembangkannya. Awk membolehkan anda menentukan pemboleh ubah, fungsi angka, rentetan, dan operator aritmetik; buat laporan berformat; dan banyak lagi.
Artikel ini menerangkan penggunaan perintah awk untuk memangkas ruang kosong. Setelah membaca artikel ini, anda akan belajar bagaimana menggunakan perintah awk untuk melakukan perkara berikut:
- Potong semua ruang kosong dalam fail
- Potong ruang putih utama
- Potong ruang kosong
- Potong kedua-dua ruang putih utama dan belakang
- Gantikan pelbagai ruang dengan satu ruang
Perintah dalam artikel ini dilakukan pada Ubuntu 20.04 Sistem Focal Fossa. Walau bagaimanapun, perintah yang sama juga dapat dilakukan pada distribusi Linux yang lain. Kami akan menggunakan aplikasi Terminal Ubuntu lalai untuk menjalankan perintah dalam artikel ini. Anda boleh mengakses terminal menggunakan pintasan papan kekunci Ctrl + Alt + T.
Untuk tujuan demonstrasi, kami akan menggunakan contoh fail bernama “sample.txt."Untuk menunjukkan contoh yang diberikan dalam artikel ini.
Lihat Semua Ruang Putih dalam Fail
Untuk melihat semua ruang kosong yang terdapat dalam fail, masukkan output perintah cat ke perintah tr, seperti berikut:
$ sampel kucing.txt | tr "" "*" | tr "\ t" "&"Perintah ini akan menggantikan semua ruang kosong dalam fail yang diberikan dengan watak (*). Setelah memasukkan arahan ini, anda akan dapat melihat dengan jelas di mana semua ruang putih (termasuk ruang kosong utama dan belakang) ada di dalam fail.
Aksara * dalam tangkapan skrin berikut menunjukkan di mana semua ruang kosong terdapat dalam fail contoh. Single * mewakili ruang kosong tunggal.
Potong Semua Ruang Putih
Untuk membuang semua ruang kosong dari fail, masukkan perintah cat out ke perintah awk, seperti berikut:
$ sampel kucing.txt | awk 'gsub (/ /, ""); cetak 'Di mana
- gsub (bermaksud penggantian global) adalah fungsi penggantian
- / / mewakili ruang putih
- "" tidak mewakili apa-apa (memotong tali)
Perintah di atas menggantikan semua ruang kosong (/ /) dengan apa-apa ("").
Dalam tangkapan skrin berikut, anda dapat melihat bahawa semua ruang putih, termasuk ruang putih utama dan belakang, telah dikeluarkan dari output.
Potong Ruang Kosong Terkemuka
Untuk membuang hanya ruang kosong utama dari fail, masukkan perintah kucing ke perintah awk, seperti berikut:
$ sampel kucing.txt | awk 'sub (/ ^ [\ t] + /, ""); cetak 'Di mana
- sub adalah fungsi penggantian
- ^ mewakili permulaan rentetan
- [\ t]+ mewakili satu atau lebih ruang
- "" tidak mewakili apa-apa (memotong tali)
Perintah di atas menggantikan satu atau lebih ruang di awal rentetan (^ [\ t] +) dengan apa-apa (“”) untuk membuang ruang kosong utama.
Dalam tangkapan skrin berikut, anda dapat melihat bahawa semua ruang kosong terkemuka telah dikeluarkan dari output.
Anda boleh menggunakan arahan berikut untuk mengesahkan bahawa arahan di atas telah membuang ruang kosong utama:
$ sampel kucing.txt | awk 'sub (/ ^ [\ t] + /, ""); cetak '| tr "" "*" |tr "\ t" "&"
Dalam tangkapan skrin di bawah, dapat dilihat dengan jelas bahawa hanya ruang putih terkemuka yang telah dikeluarkan.
Potong ruang kosong
Untuk menghapus hanya ruang kosong yang tertinggal dari fail, masukkan perintah kucing ke perintah awk, seperti berikut:
$ sampel kucing.txt | awk 'sub (/ [\ t] + $ /, ""); cetak 'Di mana
- sub adalah fungsi penggantian
- [\ t]+ mewakili satu atau lebih ruang
- $ mewakili hujung rentetan
- "" tidak mewakili apa-apa (memotong tali)
Perintah di atas menggantikan satu atau lebih ruang di hujung rentetan ([\ t] + $) dengan apa-apa (“”) untuk membuang ruang kosong yang tertinggal.
Anda boleh menggunakan perintah berikut untuk mengesahkan bahawa arahan di atas telah menghapus ruang kosong yang tertinggal:
$ sampel kucing.txt | awk 'sub (/ [\ t] + $ /, ""); cetak '| tr "" "*" | tr "\ t" "&"Dari tangkapan skrin di bawah, jelas kelihatan bahawa ruang kosong yang tertinggal telah dikeluarkan.
Potong Ruang Putih Terkemuka dan Mengikuti
Untuk mengeluarkan kedua-dua ruang kosong utama dan belakang dari fail, masukkan perintah cat out ke perintah awk, seperti berikut:
$ sampel kucing.txt | awk 'gsub (/ ^ [\ t] + | [\ t] + $ /, ""); cetak 'Di mana
- gsub adalah fungsi penggantian global
- ^ [\ t]+ mewakili ruang putih terkemuka
- [\ t] + $ mewakili ruang kosong yang tertinggal
- "" tidak mewakili apa-apa (memotong tali)
Perintah di atas menggantikan kedua-dua ruang depan dan belakang (^ [\ t]+ [\ t] + $) tanpa apa-apa (“”) untuk menghapusnya.
Untuk menentukan sama ada arahan di atas telah membuang kedua-dua ruang kosong utama dan belakang dalam fail, gunakan arahan berikut:
$ sampel kucing.txt | awk 'gsub (/ ^ [\ t] + | [\ t] + $ /, ""); cetak '|tr "" "*" | tr "\ t" "&"
Dari tangkapan skrin di bawah, dapat dilihat dengan jelas bahawa ruang putih depan dan belakang telah dikeluarkan, dan hanya ruang putih di antara rentetan yang tersisa.
Gantikan Pelbagai Ruang dengan Ruang Tunggal
Untuk mengganti beberapa ruang dengan satu ruang, letakkan perintah out of cat ke perintah awk, seperti berikut:
$ sampel kucing.txt | awk 'gsub (/ [] + /, ""); cetak 'Di mana:
- gsub adalah fungsi penggantian global
- []+ mewakili satu atau lebih ruang kosong
- "" mewakili satu ruang putih
Perintah di atas menggantikan beberapa ruang putih ([] +) dengan satu ruang putih (““).
Anda boleh menggunakan perintah berikut untuk mengesahkan bahawa arahan di atas telah menggantikan beberapa ruang dengan ruang kosong:
$ sampel kucing.txt | awk 'sub (/ [\ t] + $ /, ""); cetak '| | tr "" "*" | tr "\ t" "&"Terdapat banyak ruang dalam fail sampel kami. Seperti yang anda lihat, beberapa ruang kosong dalam sampel.fail txt digantikan dengan satu ruang kosong dengan menggunakan perintah awk.
Untuk memangkas ruang putih hanya pada baris yang mengandungi watak tertentu, seperti koma, titik dua, atau titik koma, gunakan perintah awk dengan -F pemisah input.
Contohnya, ditunjukkan di bawah adalah contoh fail kami yang mengandungi ruang kosong di setiap baris.
Untuk membuang ruang kosong hanya dari garis yang mengandungi koma (,), perintahnya adalah seperti berikut:
$ kucing sampel1.txt | awk -F, '/, / gsub (/ /, ""); cetak 'Di mana (-F,) adalah pemisah medan input.
Perintah di atas hanya akan membuang dan memaparkan ruang putih dari garis yang mengandungi watak yang ditentukan (,) di dalamnya. Garis selebihnya tidak akan terjejas.
Kesimpulannya
Itu sahaja yang perlu anda ketahui untuk mengurangkan ruang kosong dalam data anda menggunakan perintah awk. Mengeluarkan ruang kosong dari data anda mungkin diperlukan kerana beberapa sebab yang berbeza. Apa pun alasannya, anda boleh memotong semua ruang kosong dalam data anda dengan mudah menggunakan perintah yang dijelaskan dalam artikel ini. Anda bahkan boleh memangkas ruang kosong yang mengarah ke depan atau yang mengekor, memangkas kedua-dua ruang kosong yang mengarah ke depan dan belakang, dan mengganti pelbagai ruang dengan satu ruang dengan arahan awk.