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 .