15 Januari 2011

Konversi TEXT ke ANGKA dengan REGEX

Pada akhir pekan ini, saya membantu kolega dari jarak jauh (2200 km) melalui email/Internet. Masalah yang muncul ialah bagaimana caranya mengubah bilangan dalam bentuk TEXT menjadi bentuk ANGKA. Hal ini sering terjadi, saat memasukkan hasil perhitungan komputer ke dalam spreadsheet seperti MS EXCEL. Umpamanya, 15.24 muncul sebagai " 15,24 ". Perhatikan, bahwa ada karakter putih antara tanda kutip dan angka tersebut.
Kalau hanya beberapa angka, hal ini dapat dengan mudah dikoreksi secara manual. Namun, rupanya ada beberapa puluh ribu yang harus dikonversi. Cape deh!
Berikut ini merupakan solusi bodoh-bodohan. Saya percaya, bahwa banyak solusi yang lebih canggih dari ini. Pertama-tama, diasumsikan bahwa yang akan dikonversi berada di dalam sebuah kolom yang sama. Jika berada dalam beberapa kolom, hal ini mesti diulangi beberapa kali sesuai dengan jumlah kolom.
Bukalah sebuah spreadsheet baru (new) lalu "cut and paste" kolom ke spreadsheet baru tersebut. Lalu "save" dalam format CSV (Comma-Separated Values). Umpama, berkas bernama "tmptmp.csv".
Gunakanlah fasilitas REGEX yang terdapat pada editor "vi" atau pun "sed":

$ sed -e "s/\"[^0-9\-]//g" \
  -e "s/[^0-9]\"//g" \
  -e "s/\"//g" \
  -e "s/,/./g" tmptmp.csv > tmptmp ;
  mv -f tmptmp tmptmp.csv

Buka kembali berkas "tmptmp.csv" tersebut, serta gantikan hasil tersebut ke kolom semula.


Demikianlah!


revisi 11.01.15-00