Dalam panduan ramah pemula ini, Anda akan mempelajari dasar-dasar awk
memerintah. Anda juga akan melihat beberapa cara untuk menggunakannya saat menangani teks.
Mari kita mulai!
Apa itu awk
perintah?
awk
adalah bahasa skrip, dan sangat membantu saat bekerja di baris perintah. Ini juga merupakan perintah yang banyak digunakan untuk pemrosesan teks.
Saat menggunakan awk
, Anda dapat memilih data – satu atau beberapa bagian teks individual – berdasarkan pola yang Anda berikan.
Misalnya, beberapa operasi yang dapat Anda lakukan dengan awk
sedang mencari kata atau pola tertentu dalam sepotong teks yang diberikan, atau bahkan memilih baris atau kolom tertentu dalam file yang Anda berikan.
Sintaks Dasar dari awk
perintah
Dalam bentuknya yang paling sederhana, awk
perintah diikuti oleh satu set tanda kutip tunggal dan satu set kurung kurawal, dengan nama file yang ingin Anda cari melalui yang disebutkan terakhir.
Tampilannya seperti ini:
awk '{action}' your_file_name.txt
Saat Anda ingin mencari teks yang memiliki pola tertentu atau Anda sedang mencari kata tertentu dalam teks, perintahnya akan terlihat seperti ini:
awk '/regex pattern/{action}' your_file_name.txt
Cara membuat file sampel
Untuk membuat file di baris perintah, Anda menggunakan touch
memerintah.
Misalnya:touch filename.txt
di mana filename
, adalah nama file Anda.
Anda kemudian dapat menggunakan open
perintah (open filename.txt
), dan program pengolah kata seperti TextEdit akan terbuka di mana Anda dapat menambahkan konten file.
Jadi, katakanlah Anda memiliki file teks, information.txt
, yang berisi data yang dipisahkan ke dalam kolom yang berbeda.
Isi file bisa terlihat seperti ini:
fristName lastName age city ID
Thomas Shelby 30 Rio 400
Omega Night 45 Ontario 600
Wood Tinker 54 Lisbon N/A
Giorgos Georgiou 35 London 300
Timmy Turner 32 Berlin N/A
Dalam contoh saya, ada satu kolom untuk firstName
, lastName
, age
, city
, dan ID
.
Setiap saat, Anda dapat melihat output dari konten file Anda dengan mengetikkan cat text_file
, di mana text_file
adalah nama file Anda.
Cara mencetak semua isi file menggunakan awk
Untuk mencetak semua isi file, tindakan yang Anda tentukan di dalam kurung kurawal adalah print $0
.
Ini akan bekerja dengan cara yang persis sama dengan cat
perintah yang disebutkan sebelumnya.
awk '{print $0}' information.txt
Keluaran:
fristName lastName age city ID
Thomas Shelby 30 Rio 400
Omega Night 45 Ontario 600
Wood Tinker 54 Lisbon N/A
Giorgos Georgiou 35 London 300
Timmy Turner 32 Berlin N/A
Jika Anda ingin setiap baris memiliki jumlah nomor baris, gunakan NR
variabel bawaan:
awk '{print NR,$0}' information.txt
1 fristName lastName age city ID
2
3 Thomas Shelby 30 Rio 400
4 Omega Night 45 Ontario 600
5 Wood Tinker 54 Lisbon N/A
6 Giorgos Georgiou 35 London 300
7 Timmy Turner 32 Berlin N/A
Cara mencetak kolom tertentu menggunakan awk
Saat menggunakan awk
, Anda dapat menentukan kolom tertentu yang ingin Anda cetak.
Untuk mencetak kolom pertama, gunakan perintah:
awk '{print $1}' information.txt
Keluaran:
Thomas
Omega
Wood
Giorgos
Timmy
$1
singkatan dari field pertama, dalam hal ini kolom pertama.
Untuk mencetak kolom kedua, gunakan $2
:
awk '{print $2}' information.txt
Keluaran:
lastName
Shelby
Night
Tinker
Georgiou
Turner
Cara awk
menentukan di mana setiap kolom dimulai dan diakhiri dengan spasi, secara default.
Untuk mencetak lebih dari satu kolom, misalnya kolom pertama dan keempat, Anda harus melakukan:
awk '{print $1, $4}' information.txt
Keluaran:
fristName city
Thomas Rio
Omega Ontario
Wood Lisbon
Giorgos London
Timmy Berlin
$1
mewakili bidang input pertama (kolom pertama), dan $4
mewakili sebagainya. Anda memisahkannya dengan koma, $1,$4
, sehingga output memiliki spasi dan lebih mudah dibaca.
Untuk mencetak kolom terakhir (kolom terakhir), Anda juga dapat menggunakan $NF
yang mewakili terakhir bidang dalam catatan:
awk '{print $NF}' information.txt
Keluaran:
ID
400
600
N/A
300
N/A
Cara mencetak baris kolom tertentu
Anda juga dapat menentukan garis yang ingin Anda cetak dari kolom pilihan Anda:
awk '{print $1}' information.txt | head -1
Keluaran:
FirstName
Mari kita hancurkan perintah itu. awk '{print $1}' information.txt
mencetak kolom pertama. Kemudian output dari perintah itu (yang Anda lihat sebelumnya) adalah piped , menggunakan simbol pipa |
, ke perintah head, di mana -1
its argumen memilih baris pertama kolom.
Jika Anda ingin mencetak dua baris, lakukan:
awk '{print $1}' information.txt | head -2
Keluaran:
FirstName
Dionysia
Cara mencetak garis dengan pola tertentu di awk
Anda dapat mencetak garis yang dimulai dengan huruf tertentu.
Misalnya:
awk '/^O/' information.txt
Keluaran:
Omega Night 45 Ontario 600
Perintah itu memilih baris apa pun dengan teks yang dimulai dengan O
.
Anda menggunakan simbol panah atas (^
) pertama, yang menunjukkan awal baris, lalu huruf yang Anda inginkan untuk memulai baris.
Anda juga dapat mencetak garis yang berakhir dalam pola tertentu:
awk '/0$/' information.txt
Keluaran:
Thomas Shelby 30 Rio 400
Omega Night 45 Ontario 600
Giorgos Georgiou 35 London 300
Ini mencetak baris yang diakhiri dengan 0
– $
simbol digunakan setelah karakter untuk menandakan bagaimana sebuah garis akan berakhir.
Perintah itu juga bisa diubah menjadi:
awk '! /0$/' information.txt
!
digunakan sebagai NOT
, jadi dalam hal ini ia memilih baris yang TIDAK diakhiri dengan 0
.
fristName lastName age city ID
Wood Tinker 54 Lisbon N/A
Timmy Turner 32 Berlin N/A
Cara menggunakan ekspresi reguler di awk
Untuk menampilkan kata-kata yang mengandung huruf tertentu dan mencetak kata-kata yang cocok dengan pola yang Anda tentukan, Anda kembali menggunakan garis miring, //
, ditampilkan sebelumnya.
Jika Anda ingin mencari kata yang mengandung on
, Anda akan melakukan:
awk ' /io/{print $0}' information.txt
Keluaran:
Thomas Shelby 30 Rio 400
Omega Night 45 Ontario 600
Giorgos Georgiou 35 London 300
Ini cocok dengan semua entri yang berisi io
.
Katakanlah Anda memiliki kolom tambahan – department
kolom:
fristName lastName age city ID department
Thomas Shelby 30 Rio 400 IT
Omega Night 45 Ontario 600 Design
Wood Tinker 54 Lisbon N/A IT
Giorgos Georgiou 35 London 300 Data
Timmy Turner 32 Berlin N/A Engineering
Untuk menemukan semua informasi orang yang bekerja di IT
, Anda perlu menentukan string yang Anda cari di antara garis miring, //
:
awk '/IT/' information.txt
Keluaran:
Thomas Shelby 30 Rio 400 IT
Wood Tinker 54 Lisbon N/A IT
Bagaimana jika Anda hanya ingin melihat nama depan dan belakang orang-orang yang bekerja di IT
?
Anda dapat menentukan kolom seperti ini:
awk '/IT/{print $1, $2}' information.txt
Keluaran:
Thomas Shelby
Wood Tinker
Ini hanya akan menampilkan kolom pertama dan kedua di mana IT
muncul, alih-alih menampilkan semua bidang.
Saat menelusuri kata dengan pola tertentu, mungkin ada saatnya Anda perlu menggunakan karakter escape, seperti:
awk '/N\/A$/' information.txt
Keluaran:
Wood Tinker 54 Lisbon N/A
Timmy Turner 32 Berlin N/A
Saya ingin menemukan garis yang diakhiri dengan pola N/A
.
Jadi, ketika mencari di antara ' // '
seperti yang ditunjukkan sejauh ini, saya harus menggunakan karakter pelarian (\
) antara N/A
, jika tidak, saya akan mendapatkan kesalahan.
Cara menggunakan operator perbandingan di awk
Jika, misalnya, Anda ingin menemukan semua informasi karyawan yang berusia di bawah 40
, Anda akan menggunakan <
operator perbandingan seperti ini:
awk '$3 < 40 { print $0 }' information.txt
Keluaran:
Thomas Shelby 30 Rio 400
Giorgos Georgiou 35 London 300
Timmy Turner 32 Berlin N/A
Outputnya hanya menampilkan informasi orang di bawah 40 tahun.
Kesimpulan
Dan di sana Anda memilikinya! Anda sekarang mengetahui dasar-dasar mutlak untuk mulai bekerja dengan awk
dan memanipulasi data teks.
Untuk mempelajari lebih lanjut tentang Linux, freeCodeCamp memiliki berbagai macam materi pembelajaran yang tersedia.
Berikut adalah beberapa di antaranya untuk Anda mulai:
- Dasar-Dasar Linux - Lokakarya Praktis
- Linux untuk Peretas Etis (Tutorial Kali Linux)
- Buku Pegangan Perintah Linux
Terima kasih telah membaca dan selamat belajar 😊