Bagaimana Menyisipkan Garis setelah Pertandingan menggunakan `sed`?

How Insert Line After Match Using Sed

Salah satu perintah Linux yang berguna dan kuat adalah perintah sed. Perintah ini digunakan untuk melakukan berbagai jenis tugas di Linux, seperti menyisipkan, memperbarui, dan menghapus teks atau baris tertentu berdasarkan kecocokan. Anda dapat menyisipkan teks dalam string atau file dengan cara yang berbeda dengan menggunakan perintah sed.

Cara menyisipkan garis setelah menemukan kecocokan dalam string atau garis ditunjukkan dalam tutorial ini.



Sisipkan baris di String

Baris baru dapat dimasukkan setelah nilai string apa pun menggunakan perintah sed jika pola yang ditentukan dalam perintah cocok dengan bagian mana pun dari nilai string.



Contoh berikut menunjukkan bagaimana baris baru dapat ditambahkan setelah nilai string jika string tertentu ada di mana pun dalam nilai string.



Contoh-1: Menyisipkan baris dalam string setelah menemukan kecocokan

Perintah berikut akan mencari dalam string, saya suka pemrograman, dan sebaris teks, Apakah Anda suka pemrograman? akan dimasukkan setelah string jika string pencarian ada.

Di sini, karakter & digunakan untuk menyisipkan baris setelah string.

$dibuang 'Saya suka pemrograman.' | sed 's / inng / & Apakah Anda suka pemrograman? / '

Output berikut menunjukkan bahwa inng tidak ada dalam string dan tidak ada baris yang dimasukkan setelah string.




Perintah berikut akan mencari ing. dalam string, saya suka pemrograman dan itu ada di string.

$dibuang 'Saya suka pemrograman.' | sed 's/ing./& Apakah Anda suka pemrograman?/'

Output berikut menunjukkan bahwa baris baru ditambahkan setelah string.

Menyisipkan baris dalam File

Ada dua cara untuk menyisipkan baris setelah kecocokan ditemukan dalam file yang disebutkan di bawah ini. Ketika perintah sed digunakan tanpa opsi -i, maka konten file akan tetap tidak berubah, dan output akan menampilkan konten file dengan baris baru yang disisipkan. Anda harus menggunakan opsi -i dengan perintah sed untuk menyisipkan baris baru secara permanen di file jika pola yang cocok ada di file.

A. Menggunakan a dalam perintah sed

a dapat digunakan dalam pola pencarian sed untuk menambahkan satu atau lebih baris dalam file setelah baris di mana pola pencarian cocok atau setelah nomor baris tertentu.

B. Menggunakan i dalam perintah sed

Saya dapat digunakan dalam pola pencarian dari perintah sed untuk menyisipkan satu atau lebih baris dalam file sebelum baris di mana pola pencarian cocok.

Sisipkan baris dalam file berdasarkan pola:

Buat file teks tab-delimited bernama produk.txt dengan konten berikut untuk menunjukkan penggunaan flag di atas dalam perintah sed.

produk.txt

Nama ID

01 krim kocok

02 Bubuk Kakao

03 Gula

04 Telur

05 Tepung

Contoh-2: Menyisipkan baris setelah nomor baris tertentu menggunakan a

Perintah berikut menunjukkan bagaimana baris baru dapat ditambahkan, setelah nomor baris tertentu dari file products.txt, berdasarkan pola yang digunakan dalam perintah sed.

Di sini, perintah pertama akan menampilkan konten file yang ada. Perintah sed akan menambahkan teks, b01 Baking powder, setelah dua baris pertama file. Perintah terakhir digunakan untuk memeriksa apakah isi file diubah atau tidak.

$kucingproduk.txt

$sed '2 a b01 Baking powder'produk.txt

$kucingproduk.txt

Output berikut akan muncul setelah menjalankan perintah di atas.

Contoh-3: Menyisipkan baris setelah baris terakhir menggunakan a

Perintah berikut menunjukkan cara menambahkan baris baru setelah baris terakhir file. Perintah pertama dan terakhir menunjukkan konten file yang ada sebelum dan sesudah menjalankan perintah sed. Simbol $ digunakan dalam pola perintah sed untuk menyebutkan baris terakhir file.

$kucingproduk.txt

$sed '$ a b01 Baking powder'produk.txt

$kucingproduk.txt

Output berikut akan muncul setelah menjalankan perintah di atas.

Contoh-4: Sisipkan baris di mana saja dalam file setelah mencocokkan pola menggunakan a

Perintah sed berikut menunjukkan bagaimana baris baru dapat ditambahkan di mana saja dalam file berdasarkan pola yang cocok. Pola yang digunakan dalam perintah sed akan mencari baris apa pun yang dimulai dengan s01, dan menambahkan string baru setelahnya. Baris keempat file dimulai dengan s01, dan baris baru akan disisipkan setelah baris itu.

$kucingproduk.txt

$sed '/^s01.*/a b01 Baking Powder'produk.txt

$kucingproduk.txt

Output berikut akan muncul setelah menjalankan perintah.


Perintah sed berikut akan mencari baris apa pun yang diakhiri dengan Powder dan menyisipkan baris baru setelahnya. Baris ketiga file diakhiri dengan Powder. Jadi, baris baru akan dimasukkan setelah baris itu.

$kucingproduk.txt

$sed '/Powder$/a b01 Baking Powder'produk.txt

$kucingproduk.txt

Output berikut akan muncul setelah menjalankan perintah di atas.

Contoh-5: Sisipkan beberapa baris setelah pola yang cocok menggunakan a

Perintah sed berikut menunjukkan cara menambahkan beberapa baris di dalam konten file berdasarkan pola yang cocok.

Di sini, dua baris akan ditambahkan setelah baris ketiga, sesuai dengan polanya.

$kucingproduk.txt

$sed '/^[a-c]/a b01 Baking Powder b02 Baking Soda'produk.txt

$kucingproduk.txt

Output berikut akan muncul setelah menjalankan perintah di atas.

Contoh-6: Menyisipkan garis setelah mencocokkan pola menggunakan I

$kucingproduk.txt

$sed '/cream/i b01 Baking Powder'produk.txt

$kucingproduk.txt

Output berikut akan muncul setelah menjalankan perintah di atas.

Contoh-7: Sisipkan garis secara permanen setelah pola yang cocok menggunakan opsi -i

Perintah sed berikut menunjukkan cara mengubah konten file secara permanen. Opsi i digunakan dengan perintah sed untuk menyisipkan baris baru dalam file berdasarkan pola.

$kucingproduk.txt

$sed -Saya '/e$/a g01 Ghee'produk.txt

$kucingproduk.txt

Output berikut akan muncul setelah menjalankan perintah di atas.

Kesimpulan:

Cara menyisipkan dua baris atau lebih dalam file dengan menggunakan perintah sed dengan pola telah ditunjukkan dalam tutorial ini untuk membantu pembaca menerapkan perintah ini untuk menyisipkan baris secara sementara atau permanen berdasarkan pola.