Saya baru saja mulai belajar awk dan saya agak bingung tentang semua versi di sekitar. Apakah ada "versi" yang ditemukan di semua sistem mirip Unix? Seperti, Anda tahu, polos vi? Apakah awk standar mendukung opsi -F?
Saya baru saja mulai belajar awk dan saya agak bingung tentang semua versi di sekitar. Apakah ada "versi" yang ditemukan di semua sistem mirip Unix? Seperti, Anda tahu, polos vi? Apakah awk standar mendukung opsi -F?
Jawaban:
awk - yang paling umum dan akan ditemukan di sebagian besar sistem mirip Unix, versi tertua dan lebih rendah daripada yang lebih baru.
mawk - implementasi AWK cepat yang basis kodenya didasarkan pada penerjemah byte-code.
nawk - sementara bahasa AWK sedang dikembangkan penulis merilis versi baru (karenanya n - n awk awk) untuk menghindari kebingungan. Anggap saja seperti Python 3.0 dari AWK.
gawk - disingkat dari GNU awk. Satu-satunya versi di mana para pengembang berusaha untuk menambahkan dukungan i18n. Mengizinkan pengguna menulis pustaka bersama C mereka sendiri untuk memperluasnya dengan "plug-in" mereka sendiri. Versi ini adalah implementasi standar untuk Linux, AWK asli ditulis untuk Unix v7.
Ada versi lain seperti jawk (implementasi java), bwk (implementasi Brian W. Kernighan) dan sebagainya.
file /etc/alternatives/awk
kembalisymbolic link to /usr/bin/mawk
Anda bisa menggunakannya awk
. Ini didefinisikan oleh POSIX dan karena itu harus ada pada semua sistem POSIX-conformant.
The -F
parameter diamanatkan oleh yang juga.
gensub()
, uji dengan awk
-> gawk
, dan berpikir Anda baik sedang pergi ...
gawk --posix
untuk membuat gawk bekerja sesuai dengan standar POSIX. Itu juga memeriksa skrip Anda mengikuti standar. Anda dapat menggunakan awk --posix '' 2>/dev/null
di Ubuntu tidak masalah, jika gawk, mawk atau original-awk digunakan sebagai awk, tetapi opsi-posix hanya dikenali oleh gawk. --posix harus menjadi pilihan terakhir untuk original-awk. Anda bisa menggunakannya awk -W posix ''
dengan gawk dan mawk.
mawk --posix ''
gagal, jika Anda menggunakan mawk 1.3.3, tetapi berhasil dengan pesan kesalahan, jika Anda menggunakan mawk 1.3.4
awk
akan ada di hampir semua sistem berbasis * NIX, tetapi spesifik spesifik dari apa yang didukungnya akan sedikit bergeser karena sangat mungkin itu hanya akan disinkronkan ke versi yang berbeda seperti bagaimana /bin/sh
sering dikaitkan dengan shell tertentu, sering bash
atau salah satu dari turunannya. (Sebagai catatan, saya juga tahu banyak mesin di mana vi
symlinked vim
juga.)
The halaman Wikipedia AWK adalah referensi starter yang baik untuk mulai memahami AWK.
The Lapangan Separator pilihan ' -F
' didukung di semua varian dari AWK - afaik.
/usr/bin/awk
akan menjalankan nawk, atau gawk, atau BusyBox awk (mirip perilaku dengan gawk).