sed

Bagaimana cara mengganti kemunculan terakhir menggunakan 'sed'

Bagaimana cara mengganti kemunculan terakhir menggunakan 'sed'
Perintah 'sed' digunakan di Linux untuk berbagai jenis operasi teks, seperti menyisipkan, menghapus, mengganti, dll. Berbagai jenis tugas penggantian dapat dilakukan dengan menggunakan perintah 'sed' dengan mudah. Tugas penggantian apa pun dapat dilakukan berdasarkan teks atau pola pencarian. Teks atau pola pencarian dapat terjadi beberapa kali dalam string atau file tempat pencarian akan dilakukan. Bagaimana Anda dapat mengganti kemunculan terakhir dari teks atau pola pencarian telah ditunjukkan dalam tutorial ini.

Ganti kemunculan teks terakhir dalam sebuah string:

Bagian ini menunjukkan bagaimana kemunculan terakhir dari pola pencarian dalam sebuah string dapat diganti dengan menggunakan perintah 'sed'.

Contoh-1: Ganti kemunculan terakhir dari sebuah kata berdasarkan pola

Perintah 'sed' berikut akan mencari kata 'PHP' dalam string dan ganti kata pencarian dengan kata 'AngularJS' jika kata itu ada dalam string.

$ echo "Java PHP Bash Python JavaScript PERL PHP Laravel" |
sed 's/\(.*\)PHP/\1AngularJS/'

Output berikut akan muncul setelah menjalankan perintah:. Di sini, kata 'PHP' ada dua kali dalam string, dan kemunculan terakhir telah diganti dengan kata ' AngularJS'.

Contoh-2: Ganti kemunculan terakhir dari pola berbasis digit

Perintah 'sed' berikut akan mencari digit apa pun dalam string dan mengganti digit terakhir dengan nomor 9.

$ echo "Nilai penghitung pertama 2. Penghitung kedua bernilai 4" |
sed 's/\(.*\)[0-9])*/\19/'

Output berikut akan muncul setelah menjalankan perintah:. Di sini, digit muncul dua kali dalam string, dan digit terakhir, 4, telah diganti dengan nomor 9.

Contoh-3: Ganti digit terakhir dari angka berdasarkan pola

Perintah 'sed' berikut akan menggantikan digit terakhir yang ada dalam nilai string dengan nilai ganda nol (0 0).

$ echo "Harga produk adalah $500." | sed 's/\(.*\)[0-9]/\100/'

Output berikut akan muncul setelah menjalankan perintah:. Sini, 500 ada dalam nilai string. Jadi, menurut perintah penggantian, nol terakhir dari 500 telah digantikan oleh dua nol ganda, dan nilai yang diganti adalah 5000.

Contoh-4: Ganti kemunculan kata terakhir dengan kata lain

Perintah 'sed' berikut akan mencari kata 'Jun' dalam string dan ganti kemunculan kata terakhir dengan nilai, 'Mungkin'.

$ printf "%s\n" Jan Feb Jun Apr Jun Des | tr '\n' " |
sed 's/\(.*\)Jun/\1Mei/' | tr " '\n'

Output berikut akan muncul setelah menjalankan perintah:. Di sini, kata 'Jun' ada dua kali dalam string, dan kemunculan terakhir telah diganti dengan kata 'Mungkin'.

Ganti kemunculan terakhir teks dalam file:

Buat file teks bernama Penjualan.txt dengan konten berikut untuk menguji perintah 'sed' yang digunakan di bagian tutorial ini untuk mengganti kemunculan terakhir dari teks berdasarkan pola.

Penjualan.txt

Bulan Tahun Jumlah
Januari 2018 $ 200.000
Maret 2019 $ 300000
April 2019 $ 150000
Maret 2020 $ 350000
Mei 2019 $ 210000
Januari 2020 $ 240000

Contoh-5: Ganti kemunculan kata terakhir dengan kata lain

Perintah 'sed' berikut akan mencari kata 'Januari' dalam file dan ganti kemunculan terakhir dari kata ini dengan kata, 'Juli'.

$ penjualan kucing.txt
$ sed '$ s/Januari/Juli/' Penjualan.txt

Output berikut akan muncul setelah menjalankan perintah:. kata 'Januari' muncul dua kali dalam file. Kejadian terakhir yang ada di 7ini baris file telah diganti dengan kata 'Juli' di keluaran.

Contoh-6: Ganti kemunculan terakhir suatu angka dengan angka lain

'tak' perintah digunakan untuk membalikkan isi file. 'tak' perintah digunakan dengan perintah 'sed' pada perintah berikut untuk menggantikan kemunculan terakhir dari '2019' dengan kata, '2017'.

$ penjualan kucing.txt
$tak Penjualan.txt | sed '0,/2019/s/2019/2017/' | tac

Output berikut akan muncul setelah menjalankan perintah:. Di sini, nilai tahun, '2019' muncul tiga kali dalam file. Pertama, 'tak' perintah telah membalikkan konten file dan mengirim output ke dalam 'sed' perintah untuk menggantikan kemunculan pertama dari '2019' yang merupakan kemunculan terakhir dalam file dengan nilai tahun, '2017'. Setelah penggantian, output telah dikirim ke 'tak' perintah untuk membalikkan output lagi. Dengan cara ini, kemunculan terakhir dari '2019' telah diganti dengan nilai, '2017'.

Contoh-7: Ganti semua baris berdasarkan kemunculan kata terakhir

Pengikut 'sed' perintah akan mengganti baris dengan teks yang dibatasi tab (\t) di mana baris dimulai dengan string 'Merusak' untuk terakhir kalinya dalam file.

$ penjualan kucing.txt
$tak Penjualan.txt | sed '0,/^Mar.*/s/^Mar.*/Juli\t\t2018\t$ 400000/' | tac

Output berikut akan muncul setelah menjalankan perintah:. Dua baris dalam file dimulai dengan string, 'Merusak', dan kemunculan terakhir dari string ini muncul di 5ini garis. Pertama 'tak' perintah telah digunakan untuk membalikkan konten file dan mengirim output ke 'sed' perintah. 'sed' perintah telah mengganti baris dengan teks, 'Juli 2018 $ 400000' di mana string pencarian ditemukan untuk pertama kalinya. Keluaran dari 'sed' perintah telah dikirim ke 'tak' perintah lagi untuk membalikkan output yang merupakan konten utama file.

Kesimpulan:

Perintah 'sed' dapat digunakan untuk mengganti bagian mana pun dari string atau baris file dengan cara yang berbeda dengan menggunakan pola ekspresi reguler. Tutorial ini menunjukkan cara untuk mengganti kemunculan terakhir dari teks pencarian dalam string atau file dengan menggunakan beberapa perintah 'sed'. Bagaimana perintah 'tac' dapat digunakan dengan perintah 'sed' untuk menggantikan kemunculan terakhir dari teks pencarian juga telah ditunjukkan dalam tutorial ini. Tetapi semua perintah yang digunakan di sini akan menghasilkan output sementara. Anda harus menggunakan opsi '-i' dengan perintah 'sed' untuk mengubah konten file secara permanen berdasarkan pola.

Pertempuran Untuk Wesnoth 1.13.6 Pengembangan Dirilis
Pertempuran Untuk Westnoth 1.13.6 dirilis bulan lalu, adalah rilis pengembangan keenam dalam 1.13.x series dan memberikan sejumlah peningkatan, teruta...
Cara Menginstal League Of Legends di Ubuntu 14.04
Jika Anda adalah penggemar League of Legends, maka ini adalah kesempatan bagi Anda untuk menguji coba League of Legends. Perhatikan bahwa LOL didukung...
Instal Game Strategi OpenRA terbaru di Ubuntu Linux
OpenRA adalah mesin game Strategi Waktu Nyata Libre/Gratis yang membuat ulang game Westwood awal seperti Command & Conquer klasik: Red Alert. Mod yang...