Cara Menggunakan Perintah Sed di Bash Linux

Jika kita familiar dengan notepad di Windows, atau vi dan nano di Linux. Serupa dengan beberapa tools tadi, Sed juga merupakan sebuah Text Editor, namun tanpa menggunakan User Interface.

Salah satu manfaat dari Sed yaitu, dapat merubah isi file dalam sebuah bash/shell script secara otomatis. 

Secara garis besar, berikut ini merupakan kemampuan Sed:

  1. Select Text/String
  2. Substitute Text/String
  3. Add/Delete Line

Substitute Text/String pada Bash/Shell Script Linux

Secara simple, Sed mampu merubah atau memodifikasi text/string tanpa interaksi
echo yukbermain | sed 's/bermain/belajar/'

Contoh merubah isi file
sed -i 's/textasli/gantidenganini/g' stg.env.properties

Fungsi yang paling sering digunakan adalah merename beberapa context didalam sebuah atau beberapa file.

Dengan menambahkan -i, maka original file akan otomatis tersimpan. Jika ingin membackup original file menjadi file lain, maka perlu ditambahkan ekstensi yang diinginkan.
sed -i '.bak' 's/textasli/gantidenganini/g' stg.env.properties


Selain itu, Sed juga sangat berguna apabila kita ingin merubah seluruh file dengan kata kunci tertentu. Sebagai contoh, Jika kita ingin merubah sebuah nilai Xms256m menjadi Xms64m yang terdapat pada sejumlah file dengan extension .sh maka cukup menuliskan perintah berikut:

-rwxr-xr-x 1 ecm-batch ecm-batch 1074 Jul 27 11:49 bPrLclDbPtnerInqryAlmDb2DbJob.sh
-rwxr-xr-x 1 ecm-batch ecm-batch 1074 Jul 27 11:49 bPrSysMlRestockAlarmDb2RstJob.sh
-rwxr-xr-x 1 ecm-batch ecm-batch 1083 Jul 27 11:49 bPrSysMlSfStckShrtgAlrmDb2RstJob.sh
-rwxr-xr-x 1 ecm-batch ecm-batch 1119 Jul 27 11:49 bPrSystemEndSaleReserveProductChangeDb2DbJob.sh
-rwxr-xr-x 1 ecm-batch ecm-batch 1077 Jul 27 11:49 bSeBdbNPPayDataCllctRest2DbJob.sh
-rwxr-xr-x 1 ecm-batch ecm-batch 1086 Jul 27 11:49 bSeBoAdditionalSettlementDb2DbJob.sh
-rwxr-xr-x 1 ecm-batch ecm-batch 1077 Jul 27 11:49 bSeBoAdjustmentHistoryDb2DbJob.sh
-rwxr-xr-x 1 ecm-batch ecm-batch 1122 Jul 27 11:49 bSeBoAdvertisingCostDb2DbJob.sh
-rwxr-xr-x 1 ecm-batch ecm-batch 1080 Jul 27 11:49 bSeBoAverageCostInboundDb2DbJob.sh
-rwxr-xr-x 1 ecm-batch ecm-batch 1265 Jul 27 11:49 bSeBoConsignmentSettlementReportDb2DbJob.sh
-rwxr-xr-x 1 ecm-batch ecm-batch 1077 Jul 27 11:49 bSeBoDailySalesCollectDb2DbJob.sh
-rwxr-xr-x 1 ecm-batch ecm-batch 1059 Jul 27 11:49 bSeBoDeliveryFeeDb2DbJob.sh
-rwxr-xr-x 1 ecm-batch ecm-batch 1071 Jul 27 11:49 bSeBoDepositExpectedDb2DbJob.sh
-rwxr-xr-x 1 ecm-batch ecm-batch 1089 Jul 27 11:49 bSeBoDirectPurchaseInboundDb2DbJob.sh
-rwxr-xr-x 1 ecm-batch ecm-batch 1092 Jul 27 11:49 bSeBoDirectPurchaseOutboundDb2DbJob.sh
-rwxr-xr-x 1 ecm-batch ecm-batch 1092 Jul 27 11:49 bSeBoDirectPurchaseUnitCostDb2DbJob.sh
-rwxr-xr-x 1 ecm-batch ecm-batch 1068 Jul 27 11:49 bSeBoDisplayProductDb2DbJob.sh
-rwxr-xr-x 1 ecm-batch ecm-batch 1062 Jul 27 11:49 bSeBoInsuranceFeeDb2DbJob.sh
-rwxr-xr-x 1 ecm-batch ecm-batch 1277 Jul 27 11:49 bSeBoKinokuniyaSettlementReportDb2ChannelJob.sh
-rwxr-xr-x 1 ecm-batch ecm-batch 1086 Jul 27 11:49 bSeBoMdrShareCollectDailyDb2DbJob.sh
-rwxr-xr-x 1 ecm-batch ecm-batch 1092 Jul 27 11:49 bSeBoOrderProductSettlementDb2DbJob.sh
-rwxr-xr-x 1 ecm-batch ecm-batch 1074 Jul 27 11:49 bSeBoPeriodSettlementDb2DbJob.sh
-rwxr-xr-x 1 ecm-batch ecm-batch 1071 Jul 27 11:49 bSeBoPointSettlementDb2DbJob.sh
-rwxr-xr-x 1 ecm-batch ecm-batch 1074 Jul 27 11:49 bSeBoProductFirstCostDb2DbJob.sh
-rwxr-xr-x 1 ecm-batch ecm-batch 1077 Jul 27 11:49 bSeBoPublicTaxOfFinancDb2DbJob.sh
-rwxr-xr-x 1 ecm-batch ecm-batch 1086 Jul 27 11:49 bSeBoRedeliverySettlementDb2DbJob.sh
-rwxr-xr-x 1 ecm-batch ecm-batch 1068 Jul 27 11:49 bSeBoRegistMdrShareDb2DbJob.sh
-rwxr-xr-x 1 ecm-batch ecm-batch 1065 Jul 27 11:49 bSeBoRegistProductDb2DbJob.sh
-rwxr-xr-x 1 ecm-batch ecm-batch 1035 Jul 27 11:49 bSeBoSMSDb2DbJob.sh
-rwxr-xr-x 1 ecm-batch ecm-batch 1452 Jul 27 11:49 bSeChnnlIndomaretTrDataCllctFile2DbJob.sh
-rwxr-xr-x 1 ecm-batch ecm-batch 1080 Jul 27 11:49 bSeChnnlLpTrDataCllctFile2DbJob.sh
[root@ip-11-33-66-11 shell]# sed -i 's/Xms256m/Xms64m/g' *.sh
Secara otomatis, seluruh file dengan extensi .sh jika terdapat kalimat dengan kata kunci Xms256m maka akan berubah menjadi Xms64m, tanpa perlu merubah satu persatu.

Ingat, secara default, Sed adalah case-sensitive. Untuk membuat Sed menjadi case-insensitive, maka perlu menambahkan param i pada tag terakhir.

sed -i 's/xms256m/xms64m/gi' *.sh

atau dapat juga menggunakan kurung bracket [] untuk memastikan hanya karakter terdaftar saja yang akan match dengan kata kunci
sed -i 's/[xX]ms256m/Xms64m/g' *.sh

Select Text

Select Text biasanya digunakan untuk mengambil beberapa content dari file.
Contoh file cerpen.txt:

Saat ini aku berada di kelas 3 SMP, setiap hari kujalani bersama dengan ketiga sahabatku yaitu Aris, Andri, dan Ana. Kita berempat sudah bersahabat sejak kecil.
Suatu saat kami menulis surat perjanjian persahabatan di sobekan kertas yang dimasukkan ke dalam sebuah botol, kemudian botol tersebut dikubur di bawah pohon yang nantinya surat tersebut akan kami buka saat kami menerima hasil ujian kelulusan.
Hari yang kami berempat tunggu akhirnya tiba, kami pun menerima hasil ujian dan hasilnya kita berempat lulus semua.
Kami serentak langsung pergi berlari ke bawah pohon yang pernah kami datangi dan menggali tepat di mana botol yang dahulu dikubur berada.

Kemudian, kami berempat membuka botol tersebut dan membaca tulisan yang dulu pernah kami tulis. Kertas tersebut bertuliskan “Kami berjanji akan selalu bersama untuk selamanya.”
Keesokan hari, aris berencana untuk merayakan kelulusan kami berempat. Malamnya kami berempat pergi bersama ke suatu tempat dan di situlah saat-saat yang tidak bisa aku lupakan karena aris berencana untuk menyatakan perasannya kepadaku. Akhirnya aku dan anis berpacaran.
Begitu juga dengan Andri, dia pun berpacaran dengan Ana. Malam itu sungguh malam yang istimewa untuk kami berempat. Kami pun bergegas untuk pulang.

Untuk memilih beberapa baris dari text tersebut, kita masukan parameter start line dan end line, untuk mendapatkan hasil yang sesuai. 

Contoh, select baris 1 hingga baris 2, gunakan perintah:
sed -n '1,2p' cerpen.txt

Hasilnya,

Saat ini aku berada di kelas 3 SMP, setiap hari kujalani bersama dengan ketiga sahabatku yaitu Aris, Andri, dan Ana. Kita berempat sudah bersahabat sejak kecil.
Suatu saat kami menulis surat perjanjian persahabatan di sobekan kertas yang dimasukkan ke dalam sebuah botol, kemudian botol tersebut dikubur di bawah pohon yang nantinya surat tersebut akan kami buka saat kami menerima hasil ujian kelulusan.


Selain itu, sed juga mampu menampilkan beberapa kelompok baris dalam 1 perintah
sed -n -e '1,2p' -e '6,7p' cerpen.txt

Hasilnya,
Saat ini aku berada di kelas 3 SMP, setiap hari kujalani bersama dengan ketiga sahabatku yaitu Aris, Andri, dan Ana. Kita berempat sudah bersahabat sejak kecil.
Suatu saat kami menulis surat perjanjian persahabatan di sobekan kertas yang dimasukkan ke dalam sebuah botol, kemudian botol tersebut dikubur di bawah pohon yang nantinya surat tersebut akan kami buka saat kami menerima hasil ujian kelulusan.
Kemudian, kami berempat membuka botol tersebut dan membaca tulisan yang dulu pernah kami tulis. Kertas tersebut bertuliskan “Kami berjanji akan selalu bersama untuk selamanya.”
Keesokan hari, aris berencana untuk merayakan kelulusan kami berempat. Malamnya kami berempat pergi bersama ke suatu tempat dan di situlah saat-saat yang tidak bisa aku lupakan karena aris berencana untuk menyatakan perasannya kepadaku. Akhirnya aku dan anis berpacaran.


Dapatkan bonus wallet untuk setiap transaksi di XM hingga $25 per lot. Buka akun trading Wallstreet, nasdaq, snp500 atau forex

Komentar

Postingan populer dari blog ini

Cara membuat alias Bash permanen di Linux/Unix

Compress dan Extract File Menggunakan Tar di Bash Linux

Cara Menggunakan xargs di bash/shell Linux