Tag

, , , , , ,


Untuk mendapatkan text yang ada dalam tanda petik, misalnya kita ingin mengambil text yang ada dalam tanda petik dalam baris berikut:

Orang itu berkata "saya tidak terlalu bisa menggunakan REGEX".

REGEX-nya adalah:

"[^"]*"

Contoh penggunaannya menggunakan grep :

grep -o "\"[^\"]*\"" text.txt

Catatan: ketika menggunakan grep, beri tanda backslash (\) sebelum tanda petik.

 

Dengan ini kita bisa mendapatkan semua text yang berada diantara dua buah tanda petik. Namun tanda petiknya juga  akan ikut ditampilkan. Untuk menghilangkan tanda petik tersebut kita bisa menggunakan REGEX lain yang serupa, yakni:

 

[^\"]*

Namun REGEX ini hanya akan memisahkan/memotong line yang mengandung tanda petik, sehingga jika digunakan sendiri text yang berada di luar tanda petik juga akan ikut diambil. Misalnya text:

orang itu berkata "Saya tidak terlalu bisa menggunakan REGEX"
dia bertanya "Apakah dia berkata 'iya'?"

Jika menggunakan REGEX di atas maka hasilnya adalah:

grep -o "[^\"]*" text.txt 
orang itu berkata 
Saya tidak terlalu bisa menggunakan REGEX
dia bertanya 
Apakah dia berkata 'iya'?

Nah untuk menanggulangi masalah ini, kita bisa menggabungkan kedua regex ini dengan mengolah hasil REGEX pertama dengan REGEX yang kedua di atas. Misalnya:

grep -o "\"[^\"]*\"" text.txt | grep -o "[^\"]*"

Sehingga kita akan mendapatkan hasil:

Saya tidak terlalu bisa menggunakan REGEX
Apakah dia berkata 'iya'?

 

Resep:

Mengekstrak link (untuk mendapatkan link file-file yang ingin di diwnload)

Jika filenya ada ratusan atau lebih, mungkin kita akan sangat capek jika melakukan “Klik Kanan – Save Link As” untuk mendownload semua file.  Sebagai contoh, kita akan mendownload semua file mp3 yang ada pada alamat http://mp3quran.net/eng/thubti_english.html.
Pertama-tama kita perlu melihat pola unik yang ada dalam source halaman tersebut untuk mendapatkan link nya. Contoh: salah satu link filenya berisi:

<td width=”200″><a href=”http://torrent.mp3quran.net/thubti/003.mp3“>   Download </a></td>

Pola ini bisa kita ambil untuk mendapatkan semua baris yang berpola sama, misalnya dengan menggunakan kata kunci “Download </a></td>“. Dengan ini kita bisa mendapatkan ke 114 baris unik yang memiliki pola sama.

Selanjutnya, kita hanya membutuhkan link yang serupa dengan http://torrent.mp3quran.net/thubti/003.mp3 (sebanyak 114 link) tanpa tanda petik. Maka kita harus melakukan beberapa kali penyaringan, karena pada baris tersebut ada dua token yang berada dalam tanda petik, yakni value dari tag td width yakni “200” dan Link yang akan kita ambil. Yakni:

    • Lakukan penyaringan pertama dengan mengambil semua yang ada dalam tanda petik dengan menggunakan REGEX  “[^”]*”⌟. Semua yang ada dalam tanda petik akan terambil.
    • Saring kembali agar hanya link saja yang tersisa, ambil dengan kata kunci “http“.
    • Yang terakhir, ambil Link dengan menghilangka semua tanda petik yang ada. Gunakan REGEX kedua: [^\”]*.

Nah, contoh script akhirnya yakni:

cat thubti_english.html \
| grep "Download </a></td>" \
| grep -o "\"[^\"]*\"" \
| grep http \
| grep -o "[^\"]*"

Ini adalah salah satu cara panjang. Jika ada teman-teman pembaca yang tau cara yang lebih singkat, saya sangat menunggu sarannya.

Selamat mencoba Nuxer Indonesia…