Blog Posts » Linux » linux find and replace menggunakan regex (sed)

linux find and replace menggunakan regex (sed)

Ketika saya ingin menghapus semua package (sebut saja paket) yang telah ter-download misal di var/cache/apt/archives beserta dependency-nya sekaligus, saya ingin membuat skrip / otomatisasi nya berdasarkan langkah-langkah berikut:

1. Cari semua file ekstensi .deb
2. Ambil hanya nama paket nya. Misal file python3-gi-cairo_3.14.0-1_i386.deb nama paketnya adalah python3-gi-cairo. Diketahui bahwa nama paket file .deb (dari repositori resmi) adalah sebelum karakter _ (underscore) pertama.
3. Hapus menggunakan apt-get purge

Untuk saat ini saya belum menemukan cara yang paling cepat dan simple. Setelah browsing, saya menemukan command yang bisa mengakomodasi find and replace menggunakan regular-expression (regex) yaitu sed. kebetulan sed sudah built-in dan tidak perlu mengistall paket sed di linux.
Cara yang saya gunakan menurut saya belum sempurna namun setidaknya bisa berfungsi dengan baik :D
Berikut cara yang saya gunakan:

1. Cari semua file ekstensi .deb
[Normal][RAW][Download]


Keterangan:
Tentunya bisa anda ubah tanda "." sesuai direktori anda.
Tanda > untuk menyimpan hasil pencarian ke temporary paket.log, jika sudah ada file paket.log akan di-rewrite. kalau menggunakan tanda >> akan di-append atau ditambahkan setelah baris terakhir.

Contoh hasil pencarian yang tersimpan di paket.log:
[Normal][RAW][Download]


2. Ambil hanya nama paket nya.
Misal pada baris pertama ./Downloads/catfish/python3-gi-cairo_3.14.0-1_i386.deb kita ambil teks python3-gi-cairo yaitu antara / (slash) dan _ (underscore).
Cara ini memanfaatkan regex pada command sed.
[Normal][RAW][Download]


Keterangan: opsi -r untuk mengaktifkan regex extended yaitu agar bisa menggunakan ?, +, dan grouping.

Hasilnya adalah:
[Normal][RAW][Download]


3. Hapus menggunakan apt-get purge.
apt-get dengan opsi purge menghapus bersih paket beserta config-nya dari system.
[Normal][RAW][Download]


Keterangan:
Perintah didalam perintah. http://askubuntu.com/questions/7404/can-i-run-a-command-within-another-command
Selain menggunakan apt-get bisa juga menggunakan dpkg, jika anda sudah terbiasa dengan dpkg. Dan yang pasti sesuaikan dengan distro masing-masing.

Jadi semua perintah diatas jika disatukan bisa seperti ini:
[Normal][RAW][Download]


Apakah anda punya cara yang lebih baik? silahkan berbagi di komentar :)
Terakhir dari saya. Do it at your own risk. Salam.

(admin.anggit.com)