Sed Gantikan Baris Baharu Dengan Ruang

Sed Gantikan Baris Baharu Dengan Ruang



Dalam UNIX/Linux, arahan sed ialah alat khusus untuk menyunting strim. Ia boleh melakukan pelbagai operasi pada aliran teks, seperti mencari, mencari dan menggantikan serta memasukkan/memadamkan. Walau bagaimanapun, sebahagian besarnya, sed digunakan untuk mencari dan menggantikan kandungan teks.

Dalam panduan ini, kami akan mempamerkan menggantikan baris baharu dengan ruang menggunakan sed.

Menggunakan sed untuk Menggantikan Teks

Mula-mula, mari kita lihat dengan cepat melakukan pencarian asas dan ganti menggunakan sed. Kaedah yang sama akan digunakan apabila menggantikan baris baharu dengan ruang dengan beberapa pilihan tambahan. Struktur arahan adalah seperti berikut:







$ sed -e 's///'

Sila lihat arahan berikut:



$ echo 'musang coklat cepat' | sed -e 's/cepat/cepat/g'



Perintah gema mencetak rentetan ke STDOUT . Strim STDOUT ialah berpaip kepada sed. Kami telah mengarahkan sed untuk menggantikan mana-mana contoh cepat untuk diganti dengan cepat. Akhirnya, output dicetak pada skrin.





Menggantikan Baris Baharu Dengan Ruang

Untuk demonstrasi, saya telah mencipta fail teks test.txt berikut dengan beberapa kandungan tiruan:

$ cat test.txt



Perintah sed menerima ungkapan biasa untuk menerangkan pelbagai corak. Dengan memanfaatkan ciri ini, kami akan menerangkan baris baharu sebagai \n. Mari cuba gantikan baris baharu dengan ruang putih:

$ sed -e 's/\n/ /g' test.txt

Walau bagaimanapun, itu tidak berfungsi seperti yang diharapkan. Untuk mencapai matlamat ini, kami memerlukan beberapa pilihan tambahan. Sila lihat arahan berikut:

$ sed -e ':a;N;$!ba;s/\n/ /g' test.txt

Perintah sed mempunyai berbilang bahagian; setiap satu menunjukkan tugas tertentu:

  • :a: Mencipta label 'a'
  • N: Menambah baris seterusnya pada ruang corak
  • $!ba: Jika bukan baris terakhir, kembali ke label 'a'
  • s/\n/ /g: Mencari dan menggantikan baris baharu (\n) dengan ruang (/ /). Corak dipadankan secara global (/g)

Perintah sed menggelungkan melalui langkah-langkah sehingga ia mencapai baris terakhir, menggantikan semua \n aksara dengan ruang.

Daripada perintah kompleks ini, kita boleh memudahkan perkara dengan menggunakan bendera -z yang menentukan sed untuk berfungsi dengan rekod yang dipisahkan nol. Perintah akan kelihatan seperti ini:

$ sed -z -e 's/\n/ /g' test.txt

Kaedah Alternatif

Walaupun sed boleh melakukan tugas dengan baik, terdapat beberapa alat alternatif. Dalam bahagian ini, kami akan mengkaji secara ringkas beberapa daripadanya.

Untuk contoh berikut, kita boleh menggunakan arahan tr untuk menggantikan baris baharu dengan ruang putih dengan cara yang mudah:

$ tr '\n' ' ' < test.txt

Kita juga boleh menggunakan perl untuk melakukan kerja. Sintaks berikut juga serupa dengan apa yang kami gunakan dengan sed (tetapi dipermudahkan):

$ perl -p -e 's/\n/ /' test.txt

Satu lagi cara untuk menggantikan baris baharu dengan ruang putih ialah menggunakan arahan tampal. Ambil perhatian bahawa ia hanya boleh mengalih keluar satu aksara:

$ paste -s -d ' ' test.txt

Sama seperti sed, Linux datang dengan alat lain awk. Sama seperti sed, ia juga boleh melakukan beberapa penggantian lanjutan pada input. Untuk tujuan kami, gunakan arahan awk berikut:

$ awk 1 ORS=' ' test.txt

Kesimpulan

Panduan ini meneroka cara kami boleh menggantikan baris baharu dengan ruang menggunakan sed. Ia dicapai dalam dua cara yang berbeza. Panduan ini juga termasuk alatan lain yang berkaitan yang boleh kami gunakan untuk menggantikan baris baharu dengan ruang kosong.

Daripada menggunakan perintah kompleks yang sukar dihafal, kami menggunakan skrip Bash untuk melaksanakan banyak perkara dalam Linux. Walaupun ia datang pada kos beberapa prestasi, fleksibiliti dan kebolehgunaan adalah berbaloi. Ketahui lebih lanjut tentang Skrip Bash untuk pemula .