活躍了 40 年的 AWK 現在怎麼樣了?
摘要:Robbins 認爲 AWK缺少名稱空間是它沒有成爲被廣泛使用的編程語言的主要原因之一,而且gawk 5.0中的此功能可能有助於解決該問題。Robbins在他的2018年論文中主張將AWK(特別是gawk)用作“系統編程語言”,在這種情況下,其含義是用於編寫較大的工具和程序的語言。
AWK從輸入中按行讀取。每行數據都會和程序中的每個模式進行匹配,併爲每個匹配的模式執行關聯的動作。
$ awk '/GET/ {total += $6; n++} END {print total/n}' server.log
0.0186667
$ gawk -f area.awk -e 'BEGIN {print area :: pi,area :: circle(10)}'
3.14159 314.159
/*填寫數組*/
array_set(array,“name”,make_const_string(name,strlen(name),&tmp));
array_set_numeric(array,“dev”,sbuf-> st_dev);
array_set_numeric(array,“ino”,sbuf-> st_ino);
array_set_numeric(array,“mode”,sbuf-> st_mode);
$ gawk --pretty-print -f area.awk
@namespace "area"
BEGIN {
pi = 3.14159 # namespaced "constant"
}
function circle(radius)
{
return (pi * radius * radius)
sub和gsub中反斜槓的默認處理已恢復爲3.1。我認爲破壞兼容性是很愚蠢的,即使是爲了符合標準。