Awk adalah alat pengurai teks yang kuat untuk sistem Unix dan mirip Unix, tetapi karena memiliki fungsi terprogram yang dapat Anda gunakan untuk melakukan tugas penguraian umum, ini juga dianggap sebagai bahasa pemrograman . Anda mungkin tidak akan mengembangkan aplikasi GUI berikutnya dengan awk, dan kemungkinan tidak akan menggantikan bahasa skrip default Anda, tetapi ini adalah utilitas yang kuat untuk tugas-tugas tertentu.
Apa tugas-tugas itu mungkin sangat beragam. Cara terbaik untuk menemukan masalah Anda yang mana yang paling baik diselesaikan dengan awk adalah dengan mempelajari awk; Anda akan terkejut melihat bagaimana awk dapat membantu Anda menyelesaikan lebih banyak hal tetapi dengan sedikit usaha.
Sintaks dasar Awk adalah:
awk [options] 'pattern {action}' file
Untuk memulai, buat file contoh ini dan simpan sebagai colors.txt
nama warna jumlah
apel merah 4
pisang kuning 6
merah stroberi 3
anggur ungu 10
apel hijau 8
plum />kiwi coklat 4
kentang coklat 9
nanas kuning 5
Data ini dipisahkan menjadi kolom oleh satu atau beberapa spasi. Biasanya data yang Anda analisis diatur dalam beberapa cara. Ini mungkin tidak selalu berupa kolom yang dipisahkan oleh spasi, atau bahkan koma atau titik koma, tetapi terutama dalam file log atau dump data, umumnya ada pola yang dapat diprediksi. Anda dapat menggunakan pola data untuk membantu awk mengekstrak dan memproses data yang ingin Anda fokuskan.
Mencetak kolom
Dalam awk, cetak fungsi menampilkan apa pun yang Anda tentukan. Ada banyak variabel standar yang dapat Anda gunakan, tetapi beberapa yang paling umum adalah bilangan bulat yang menunjuk kolom dalam file teks. Cobalah:
$ awk '{print $2;}' colors.txt
warna
merah
kuning
merah
ungu
hijau
ungu
coklat
coklat
kuning
Dalam hal ini, awk menampilkan kolom kedua, dilambangkan dengan $2 . Ini relatif intuitif, jadi Anda mungkin bisa menebak bahwa mencetak $1 menampilkan kolom pertama, dan cetak $3 menampilkan yang ketiga, dan seterusnya.
Untuk menampilkan semua kolom, gunakan $0 .
Angka setelah tanda dolar ($ ) adalah ekspresi , jadi $2 dan $(1+1) artinya sama.
Memilih kolom secara kondisional
File contoh yang Anda gunakan sangat terstruktur. Ini memiliki baris yang berfungsi sebagai header, dan kolom berhubungan langsung satu sama lain. Dengan mendefinisikan kondisional persyaratan, Anda dapat memenuhi syarat apa yang Anda ingin awk kembalikan saat melihat data ini. Misalnya, untuk melihat item di kolom 2 yang cocok dengan "kuning" dan mencetak isi kolom 1:
awk '$2=="yellow"{print $1}' colors.txt
pisang
nanas
Ekspresi reguler juga berfungsi. Kondisional ini terlihat pada $2 untuk perkiraan kecocokan dengan huruf p diikuti oleh sejumlah (satu atau lebih) karakter, yang pada gilirannya diikuti oleh huruf p :
$ awk '$2 ~ /p.+p/ {print $0}' colors.txt
grape purple 10
plum purple 2
Angka ditafsirkan secara alami oleh awk. Misalnya, untuk mencetak baris apa pun dengan kolom ketiga yang berisi bilangan bulat lebih besar dari 5:
awk '$3>5 {print $1, $2}' colors.txt
name color
pisang kuning
anggur ungu
apel hijau
kentang coklatPemisah bidang
Secara default, awk menggunakan spasi putih sebagai pemisah bidang. Namun, tidak semua file teks menggunakan spasi untuk menentukan bidang. Misalnya, buat file bernama colors.csv dengan konten ini:
nama,warna,jumlah
apel,merah,4
pisang,kuning,6
stroberi,merah,3
anggur,ungu,10
apel, hijau,8
prem,ungu,2
kiwi,coklat,4
kentang,coklat,9
nanas,kuning,5Awk dapat memperlakukan data dengan cara yang persis sama, selama Anda menentukan karakter mana yang harus digunakan sebagai pemisah bidang dalam perintah Anda. Gunakan --field-separator (atau cukup -F singkatnya) opsi untuk menentukan pembatas:
$ awk -F"," '$2=="yellow" {print $1}' file1.csv
pisang
nanasMenyimpan keluaran
Menggunakan pengalihan output, Anda dapat menulis hasil Anda ke file. Misalnya:
$ awk -F, '$3>5 {print $1, $2} colours.csv > output.txt
Ini membuat file dengan konten kueri awk Anda.
Lebih banyak sumber daya Linux
- Lembar contekan perintah Linux
- Lembar contekan perintah Linux tingkat lanjut
- Kursus online gratis:Ikhtisar Teknis RHEL
- Lembar contekan jaringan Linux
- Lembar contekan SELinux
- Lembar contekan perintah umum Linux
- Apa itu container Linux?
- Artikel Linux terbaru kami
Anda juga dapat membagi file menjadi beberapa file yang dikelompokkan berdasarkan data kolom. Misalnya, jika Anda ingin membagi colors.txt menjadi beberapa file sesuai dengan warna yang muncul di setiap baris, Anda dapat menyebabkan awk mengalihkan per kueri dengan menyertakan pengalihan dalam pernyataan awk Anda:
$ awk '{print > $2".txt"}' colours.txt
Ini menghasilkan file bernama yellow.txt , red.txt , dan seterusnya.
Di artikel berikutnya, Anda akan mempelajari lebih lanjut tentang bidang, catatan, dan beberapa variabel awk yang kuat.
Artikel ini diadaptasi dari episode Hacker Public Radio, podcast teknologi komunitas.