Cara mengganti beberapa baris menggunakan perintah `sed`

How Replace Multiple Lines Using Sed Command



Kadang-kadang ia memerlukan penggantian beberapa baris fail dengan watak atau teks tertentu. Perintah yang berbeza ada di Linux untuk menggantikan beberapa baris fail. Perintah `sed` adalah salah satunya untuk melakukan tugas seperti ini. Bentuk lengkap `sed` adalah Steam Editor, dan ini terutama digunakan untuk membaca dan menukar teks dengan cara yang berbeza dengan menggunakan ungkapan biasa. Bagaimana arahan ini dapat digunakan untuk mengganti beberapa baris file dengan cara yang berbeza dijelaskan dalam tutorial ini.

Lembaran Cheat `sed` yang biasa digunakan:

Karakter yang paling biasa digunakan dalam perintah `sed` dijelaskan dalam jadual berikut.







Perwatakan Tujuan
ke Ia digunakan untuk menambahkan kandungan.
b Ia digunakan untuk kandungan percabangan.
c Ia digunakan untuk menukar kandungan.
d Ia digunakan untuk menghapus barisan fail.
D Ia digunakan untuk menghapus baris pertama fail.
g Dulu menyalin dari teks penahan.
G Ini digunakan untuk menambahkan dari teks penahan.
h Ia digunakan untuk menyalin dalam teks penahan.
H Ini digunakan untuk menambahkan teks penahan.
i Ia digunakan untuk penyisipan.
Saya Ia digunakan untuk mencetak baris pengganti.
n Ia digunakan untuk pergi ke baris seterusnya.
N Ia digunakan untuk menambahkan baris input seterusnya.
hlm Ia digunakan untuk mencetak.
P Ia digunakan untuk mencetak baris pertama.
apa Ia digunakan untuk berhenti.
Q Ia digunakan untuk berhenti dengan segera.
r Ia digunakan untuk membaca fail.
R Ia digunakan untuk membaca baris dari fail.
s Ia digunakan untuk menggantikan.
t Ia digunakan untuk menguji penggantian.
T Ia digunakan untuk menguji tiada penggantian.
dalam Ia digunakan untuk menulis ke fail.
DALAM Ia digunakan untuk menulis baris ke fail.
x Ia digunakan untuk menukar corak dan menahan.
dan Ia digunakan untuk menterjemahkan.
Dengan Ia digunakan untuk membersihkan garis.
'=' Ia digunakan untuk mencetak nombor baris.

Ganti beberapa baris dengan menggunakan perintah `sed` dari terminal:

Bagaimana perintah `sed` dapat digunakan untuk mengganti beberapa baris dari file dari terminal ditunjukkan di bahagian tutorial ini. Buat fail bernama sed.txt dengan kandungan berikut menguji arahan bahagian ini.



sed.txt



Bentuk lengkap sed adalah penyunting aliran.





Ini adalah utiliti Unix yang digunakan untuk membaca dan menukar teks dalam format yang berbeza.

Ia dikembangkan oleh Lee E. McMahon.



Ia digunakan untuk pemprosesan teks.

Ia menyokong ungkapan biasa.

Contoh-1: Ganti Dua Garis Berturut-turut

Perintah `sed` berikut akan menggantikan dua baris berturut-turut dengan baris lain. Di sini, pilihan -z digunakan untuk menggantikan baris berturut-turut dengan data null sebelum menambahkan teks penggantian. Menurut perintah, 3rddan 4ikabaris fail akan diganti dengan teks, ‘Ini adalah alat yang sangat berguna’ .

$kucingsed.txt
$sed -Dengan Ia dikembangkan oleh Lee E. McMahon. nIa digunakan untuk teks
memproses./Ia adalah alat yang sangat berguna./ '
sed.txt

Output berikut akan muncul setelah menjalankan perintah.

Contoh-2: Ganti beberapa baris berdasarkan padanan dan bendera global

Perintah `sed` berikut akan menggantikan semua baris yang bermula dengan kata, 'Ia' dengan perkataan, ' Garis ini diganti '.

$kucingsed.txt
$sed Ini / * Ini. Garis ini diganti / g 'sed.txt

Output berikut akan muncul setelah menjalankan perintah. Tiga baris mengandungi perkataan ‘ Ia 'Dalam fail. Jadi, baris-baris ini telah diganti dengan teks pengganti.

Contoh-3: Ganti beberapa baris berdasarkan padanan dan arahan baris seterusnya

Perintah `sed` berikut akan menggantikan perkataan,’ adalah 'Dengan perkataan,' adalah ‘Dengan arahan baris seterusnya,‘ n ’.

$kucingsed.txt
$sed '{n; / is / {s / is / was /}}'sed.txt

Output berikut akan muncul setelah menjalankan perintah. Di sini, ‘Adalah’ wujud dalam 2nddan 4ikabaris fail, dan garis-garis ini diubah suai dengan perkataan ‘Adalah’ .

Ganti beberapa baris dengan membuat fail skrip `sed`:

Dalam contoh sebelumnya, perintah `sed` telah dilaksanakan dari terminal. Tetapi itu adalah bahasa skrip, dan jika skrip berisi banyak pernyataan, maka lebih baik membuat file sed dengan skrip. Buat fail teks bernama pelajar.txt dengan kandungan berikut di mana skrip `sed` akan diterapkan.

pelajar.txt

ID: 111045
Nama: Robert
Jabatan: CSE
Kumpulan: 35

ID: 111876
Nama: Joseph
Jabatan: BBA
Kumpulan: 27

ID: 111346
Nama: William
Jabatan: CSE
Kumpulan: 45

ID: 111654
Nama: Charles
Jabatan: EEE
Kumpulan: 41

ID: 111346
Nama: John
Jabatan: CSE
Kumpulan: 25

ID: 111746
Nama: Thomas
Jabatan: CSE
Kumpulan: 15

Contoh-4: Ganti beberapa baris fail menggunakan fail skrip `sed`

Buat fail sed bernama ganti.sed dengan kandungan berikut untuk menggantikan beberapa baris berdasarkan corak carian. Di sini, perkataan ‘ CSE 'Akan dicari dalam file teks, dan jika pertandingan itu ada, maka ia akan mencari lagi angka 35 dan 15. Jika pertandingan kedua ada di dalam file, maka akan diganti dengan angka 45.

ganti.sed

/CSE/ {
p; n;
/35/ {
s/35/Empat lima/;
p; d;
}
/lima belas/ {
s/lima belas/55/;
p; d;
}
}
p;

Jalankan arahan berikut untuk memeriksa kandungan fail yang ada. ‘CSE’ muncul empat kali dalam fail teks. 35 dan 15 wujud di dua tempat.

$kucingpelajar.txt

Perintah berikut akan menggantikan kandungan beberapa baris berdasarkan skrip sed.

$sed -n -fganti.sed students.txt

Output berikut akan muncul setelah menjalankan perintah.

Kesimpulannya

Kaedah yang berbeza untuk menggantikan beberapa baris atau kandungan beberapa baris menggunakan perintah `sed` telah ditunjukkan dalam tutorial ini. Bagaimana skrip `sed` dapat dijalankan dari file sed juga ditunjukkan dalam tutorial ini. Saya harap tutorial ini dapat membantu pembaca untuk mengganti beberapa baris fail dengan menggunakan perintah `sed`.