awk, mawk, nawk, gawk… NE?


37

Awk öğrenmeye yeni başladım ve etrafındaki tüm sürümler hakkında biraz kafam karıştı. Tüm Unix benzeri sistemlerde bulunan herhangi bir "sürüm" var mı? Mesela, düz vi? Standart awk -F seçeneğini destekliyor mu?

Yanıtlar:


37

awk - en yaygın olanıdır ve çoğu Unix benzeri sistemlerde bulunur, en eski sürüm ve daha yenisine göre daha düşük.

mawk - kod tabanı olan hızlı AWK uygulaması bir bayt kodu yorumlayıcısına dayanır.

nawk - AWK dili geliştirilirken yazarlar karışıklığı önlemek için yeni bir versiyon (bu nedenle n - n ew awk) piyasaya sürdüler . AWK'nın Python 3.0'ı gibi düşünün.

gawk - GNU awk den kısaltılmıştır. Geliştiricilerin i18n desteği eklemeye çalıştığı tek sürüm. Kullanıcıların kendi "eklentileri" ile genişletmek üzere kendi C paylaşımlı kütüphanelerini yazmalarına izin verildi. Bu sürüm Linux için standart bir uygulamadır, Unix v7 için orijinal AWK yazılmıştır.

Çene (java uygulaması), bwk (Brian W. Kernighan'ın uygulaması) ve benzeri başka versiyonlar da vardır.


3
Orijinal awk, sahip olduğum Unix benzeri bir sistemde mevcut değil. Genellikle, /usr/bin/awknawk veya gawk veya BusyBox awk (gawk davranışına benzer şekilde) çalışacaktır.
dubiousjim

10
2012 sonundan itibaren, Ubuntu / Debian sistemleri varsayılan olarak mawk kurmaktadır. Komut satırı file /etc/alternatives/awkdönersymbolic link to /usr/bin/mawk
Mike Sherrill 'Cat Recall'

MAWK, gerçek çok boyutlu diziler gibi tüm GAWK işlevlerine sahip midir?
WYSIWYG

2
@JordonBedwell Yep .. Var: regex tekrarları mawk'ta mümkün değil. Aynı zamanda çok boyutlu dizileri desteklemiyor.
WYSIWYG

1
@dubiousjim Ubuntu, evren deposunda orjinal bir ifadeye sahiptir.
jarno

6

Sadece kullanabilirsin awk. POSIX tarafından tanımlanmıştır ve bu nedenle tüm POSIX uyumlu sistemlerde bulunması gerekir.

-FParametresi olan bu zorunlu kıldığı de.


1
... ancak diğer versiyonlarla uyumluluğunu sağlamak için ne kullanabileceğinizi söylemek için standarda danışın. Örneğin, kullanma gensub(), awk-> ile test etme gawkve gitmenin iyi olduğunu düşünme ...
dmckee

1
@dmckee, gawk'in gawk --posixPOSIX standardına göre çalışmasını sağlamak için kullanabilirsiniz . Ayrıca betiğinizin standarda uygun olduğunu kontrol eder. awk --posix '' 2>/dev/nullGawk, mawk veya original-awk awk olarak kullanılırsa Ubuntu'da kullanabilirsiniz , ancak posix seçeneği sadece gawk tarafından tanınır. --posix, orjinal awk için son seçenek olmalıdır. awk -W posix ''Gawk ve mawk ile kullanabilirsiniz .
jarno

1
@dmckee oh mawk --posix ''sen mawk 1.3.3 kullanıyorsanız, başarısız, ancak mawk 1.3.4 kullanıyorsanız, hata iletisiyle başarılı
Jarno

1

awkhemen hemen her * NIX tabanlı sistemde olacaktır, ancak desteklediklerinin tam özellikleri tamamen mümkün olduğu gibi hafifçe kayar, sadece /bin/shsık sık bashveya belirli bir kabuğa nasıl bağlandığına bağlı olarak farklı bir sürüme bağlanır . türevleri. (Kayıt için, aynı zamanda vibirbirine bağlanmış makinelerin bir çoğunu da biliyorum vim.)


Her zaman birbirine bağlanması gerekmez; bazen zor bağlantılıdır.
dubiousjim

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.