Steve’s AWK Academy

illeszkedés reguláris kifejezésre:

  • if ( valtozonev ~ /regexp/ ) {…}
  • if (match(valtozonev, /regexp/) ){…}

 

Egyszerűbbtől a bonyolultabb felé

{ print $2, $1 }

{ print NR, NF, $0}  sorok száma, mezők száma, teljes sor szövege

FS több karakteres is lehet, reguláris kifejezésként értékelődik ki.

Zárójeleket mindig közvetlenül a függvénynév után tedd ki! Ne hagyj szóközt, változónévnek tekintheti az awk a függvénynévnek szánt nevet.

Ha a 6-os mező Nov, akkor ötös tartalmát hozzáadja (ls parancs kimenetét dolgozza fel
ls -l | awk ’$6 == “Nov” { sum += $5 } END { print sum }’

tömb hossza awk-ban: The answer to the first question is that the length() function does not operate on arrays in POSIX standard awk, though it does in GNU awk (gawk)

 

az awk programnak adott parameterek elkapasa:   print ARGV[1]

 

Kipróbálni:

NF == 2 { print ($2, $1) | “sort” }  p27, mi értelme van? tovább küldöm fájlba?

függvényben létrehozott változó is globális. Csak a paraméterek lokálisak.

Azonos sorok megszámlálása – a teljes sort használja indexként:

{n[$0] +=1}
END {  for (line in n)  print n[line], line | “sort”  }

 

Parancssori próbálkozások:

awk ‘BEGIN{ s=”cégnévVége _\”felszámolás alatt\”    “; gsub(/\s*”?felszámolás +alatt”?\s*$/,””,s); print s;  }’