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:
- Select Text/String
- Substitute Text/String
- Add/Delete Line
Substitute Text/String pada Bash/Shell Script Linux
Secara simple, Sed mampu merubah atau memodifikasi text/string tanpa interaksiecho yukbermain | sed 's/bermain/belajar/'
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
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
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.
Contoh, select baris 1 hingga baris 2, gunakan perintah:
Hasilnya,
sed -n '1,2p' 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.
sed -n -e '1,2p' -e '6,7p' 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. 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
Posting Komentar