Cara Parsing File Tab-Delimited Menggunakan `awk`

Cara Parsing File Tab-Delimited Menggunakan `awk`

`tab` digunakan sebagai pemisah Dalam file yang dibatasi tab. Jenis file teks ini dibuat untuk menyimpan berbagai jenis data teks dalam format yang terstruktur. Berbagai jenis perintah ada di Linux untuk mengurai jenis file ini. Perintah `awk` adalah salah satu cara untuk mengurai file yang dibatasi tab dengan cara yang berbeda. Penggunaan perintah `awk` untuk membaca file tab-delimited telah ditunjukkan dalam tutorial ini.

Buat file tab-delimited:

Buat file teks bernama users.txt dengan konten berikut untuk menguji perintah dari tutorial ini. File ini berisi nama user, email, nama user, dan password.

user.txt

Name                Email                        Username               Password

Md. Robin          [email protected]               robin89                563425

Nila Hasan         [email protected]                nila78                 245667

Mirza Abbas        [email protected]               mirza23                534788

Aornob Hasan       [email protected]              arnob45                778473

Nuhas Ahsan        [email protected]               nuhas34                563452

Contoh-1: Cetak kolom kedua dari file tab-delimited menggunakan opsi -F

Perintah `sed` berikut akan mencetak kolom kedua dari file teks tab-delimited. Di sini,‘-F’ option digunakan untuk menentukan pemisah bidang file.

$ cat users.txt

$ awk -F 't' '{print $2}' users.txt

Output berikut akan muncul setelah menjalankan perintah. Kolom kedua file berisi alamat email user, yang ditampilkan sebagai output.

Contoh-2: Cetak kolom pertama dari file tab-delimited menggunakan variabel FS

Perintah `sed` berikut akan mencetak kolom pertama dari file teks berbatas tab. Di Sini, FS ( Pemisah Bidang) variabel digunakan untuk menentukan pemisah bidang file.

$ cat users.txt

$ awk '{ print $1 }' FS='t' users.txt

Output berikut akan muncul setelah menjalankan perintah. Kolom pertama file berisi nama user, yang ditampilkan sebagai output.

Contoh-3: Cetak kolom ketiga dari file berbatas tab dengan pemformatan

Perintah `sed` berikut akan mencetak kolom ketiga dari file teks berbatas tab dengan pemformatan dengan menggunakan FS variabel dan printf. Di sini, FS variabel digunakan untuk menentukan pemisah bidang file.

$ cat users.txt

$ awk 'BEGIN{FS="t"} {printf "%10sn", $3}' users.txt

Output berikut akan muncul setelah menjalankan perintah. Kolom ketiga file berisi nama user yang telah dicetak di sini.

Contoh-4: Cetak kolom ketiga dan keempat dari file tab-delimited dengan menggunakan OFS

OFS (Output Field Separator) digunakan untuk menambahkan pemisah field pada output. Perintah `awk` berikut akan membagi konten file berdasarkan pemisah tab(t) dan mencetak kolom ke-3 dan ke-4 menggunakan tab(t) sebagai pemisah.

$ cat users.txt

$ awk -F "t" 'OFS="t" {print $3, $4 > ("output.txt")}' users.txt

$ cat output.txt

Output berikut akan muncul setelah menjalankan perintah di atas. Kolom 3 dan 4 berisi username dan password, yang telah dicetak di sini.

Contoh-5: Ganti konten tertentu dari file berbatas tab

sub() fungsi digunakan dalam `awk untuk perintah untuk substitusi. Perintah `awk` berikut akan mencari nomor 45 dan mengganti dengan nomor 90 jika nomor pencarian ada di file. Setelah substitusi, isi file akan disimpan dalam file output.txt.

$ cat users.txt

$ awk  -F "t"'{sub(/45/,90);print}' users.txt > output.txt

$ cat output.txt

Output berikut akan muncul setelah menjalankan perintah di atas. File output.txt menunjukkan konten yang dimodifikasi setelah menerapkan substitusi. Di sini, isi baris ke-5 telah diubah, dan ‘arnob45’ diubah menjadi ‘arnob90’.

Contoh-6: Tambahkan string di awal setiap baris file berbatas tab

Berikut ini, perintah `awk`, opsi ‘-F’ digunakan untuk membagi konten file berdasarkan tab(t). OFS telah digunakan untuk menambahkan koma (,) sebagai pemisah bidang dalam output. fungsi sub() digunakan untuk menambahkan string ‘—→’ di awal setiap baris output.

$ cat users.txt

$ awk -F "t" '{{OFS=","};sub(/^/, "---->");print $1,$2,$3}' users.txt

Output berikut akan muncul setelah menjalankan perintah di atas. Setiap nilai bidang dipisahkan dengan koma (,) dan string ditambahkan di awal setiap baris.

Contoh-7: Substitusi nilai file tab-delimited dengan menggunakan fungsi gsub()

fungsi gsub() digunakan dalam perintah `awk` untuk substitusi global. Semua nilai string file akan menggantikan tempat pola pencarian cocok. Perbedaan utama antara fungsi sub() dan gsub() adalah bahwa fungsi sub() menghentikan tugas substitusi setelah menemukan kecocokan pertama, dan fungsi gsub() mencari pola di akhir file untuk substitusi. Perintah `awk` berikut akan mencari kata ‘nila’ dan ‘Mira’ secara global dalam file dan mengganti semua kemunculan dengan teks, ‘Nama Tidak Valid’, di mana kata pencarian cocok.

$ cat users.txt

$ awk  -F ‘t’ '{gsub(/nila|Mira/, "Invalid Name"); print}' users.txt

Output berikut akan muncul setelah menjalankan perintah di atas. Kata ‘nila’ ada dua kali di baris ke-3 file yang telah diganti dengan kata ‘Nama Tidak Valid’ di output.

Contoh-8: Cetak konten yang diformat dari file berbatas tab

Perintah `awk` berikut akan mencetak kolom pertama dan kedua dari file dengan format menggunakan printf. Output akan menampilkan nama user dengan melampirkan alamat email dalam tanda kurung.

$ cat users.txt

$ awk -F 't' '{printf "%s(%s)n", $1,$2}' users.txt

Output berikut akan muncul setelah menjalankan perintah di atas.

Kesimpulan

Setiap file yang dibatasi tab dapat dengan mudah diuraikan dan dicetak dengan pembatas lain dengan menggunakan perintah `awk`. Cara mem-parsing file tab-delimited dan mencetak dalam format yang berbeda telah ditunjukkan dalam tutorial ini dengan menggunakan beberapa contoh. Penggunaan fungsi sub() dan gsub() dalam perintah `awk` untuk mengganti konten file tab-delimited juga dijelaskan dalam tutorial ini. Saya harap tutorial ini akan membantu pembaca untuk mengurai file tab-delimited dengan mudah setelah mempraktikkan contoh tutorial ini dengan benar.

Related Posts