Quick Referenz zum awk - DHS - Dieter Heupke Systemberatung

Quick Referenz zum awk
© 1999
Dieter Heupke Systemberatung GmbH
Syntax
awk [-F fs] [-v var=value] [program| -f prog] [source ..]
-F
-v
-f
Angabe eines Feldseparators
Variablenzuweisung (vor Ausführung von BEGIN)
Angabe eines Programmfiles
Pattern und Action
Pattern1 {action1}
Pattern2 {action2}
...
PatternX {actionX}
BEGIN
END
Das Programm besteht aus Pattern-Action Paaren, die auf
jeden Input Record komplett angewendet werden.
Pattern: Stellt die Bedingung dar
Action : Legt die Ausführung fest
Definiert z.B: Variablen vor der Ausführung des Prg.
Abschließende Anweisungen nach Ausführung des Prg.
System Variablen
$0
$1
$2
$NF
NF
Inhalt
Inhalt
Inhalt
.
.
.
Inhalt
Anzahl
des gesamten Records
des ersten Feldes
des zweiten Feldes
FS
OFS
RS
ORS
Feldseparator für Eingabe
Feldseparator für Ausgabe
Recordseparator für Eingabe
Recordseparator für Ausgabe
(default
(default
(default
(default
OFMT
Ausgabeformat für Zahlen
(default %.6g)
NR
FNR
FILENAME
Nummer des aktuellen Records
Recordnummer bezogen auf aktuelle Datei
Name der aktuellen Eingabedatei
des letzen Feldes
der Felder im aktuellen Record
white space)
blank)
newline)
newline)
Reguläre Ausdrücke
*
.
[a-zA-Z]
[^a-z]
Wiederholung des voranstehenden Ausdrucks 0 oder mehrmals
Ausdruck für 1 beliebiges Zeichen
Ausdruck für 1 beliebiges Zeichen aus der Zeichenklasse
negierte Zeichenklasse
Erweiterte Reguläre Ausdrücke im awk
|
+
?
()
ODER
Wiederholung 1 oder mehrmals
Wiederholung 0 oder 1 mal
Zusammenfassung von REs
Operatoren für Reguläre Ausdrücke
var ~ RE
var !~ RE
Überprüfung ob RE auf Inhalt von var paßt
Überprüfung ob RE auf var nicht paßt( z.B. $1 !~ /[0-9][a-g]/ )
Numerische Funktionen
sqrt(expr)
log(expr)
exp(expr)
int(expr)
cos(expr)
sin(expr)
Quadratwurzel bilden
Logarithmus zur Basis 2
Exponentialwert von expr
ganzzahliger Teil von expr
Cosinus
Sinus
String Funktionen
sub(r,s,[i])
gsub(r,s,[i])
length
length(s)
substr(s,m,n)
split(s,a,c)
index(s1,s2)
match(r,s)
sprintf(fmt,..)
tolower(s)
toupper(s)
Ersetze ersten Ausdruck r durch s [innerhalb von i sonst] $0
Ersetze alle Ausdrücke r durch s [innerhalb von i sonst] $0
Anzahl der Zeichen des aktuellen Records
Anzahl der Zeichen des String (s)
Ausgabe des Teilstrings s der Länge n ab Position m
s in a[1] ...a[n] nach c (=Sep.) zerlegen; liefert n zurueck
Position von s2 in s1 (numerisch), 0 falls nicht vorhanden
Position von Ausdruck r in s, 0 falls nicht vorhanden
formatierte Ausgabe in eine Variable entsprechend printf
Wandelt Groábuchtaben in Kleinbuchstaben
Wandelt Kleinbuchstaben in Großbuchtaben
Zuweisungen
=
+=
-=
/=
%=
*=
Zuweisungsoperator
a=a+n entspr. a+=n
a=a-n entspr. a-=n
a=a/n entspr. a/=n
a=a%n entspr. a%=n
a=a*n entspr. a*=n
Logische Operatoren
||
&&
!
Oder
Und
Nicht
Operatoren
<
>
<=
>=
==
!=
+
*
/
%
++
--
Kleiner als
Größer als
Keiner oder gleich
Größer oder gleich
Identität
Ungleich
Addition
Subtraktion
Multiplikation
Division
Modulo (Divisionsrest)
Inkrement (Erhöhen um 1)
Dekrement (Vermindern um 1)
Stringverknüpfungen
$1 = $2" "$3
Formate für printf
%d
%u
%x
%o
%c
%s
%f
%e
%g
Ganzzahl
positive Ganzzahl
Ganzzahl hexadezimal
Ganzzahl oktal
Zeichen
String
reele Zahl
reele Zahl E-Format
kürzeste Schreibweise
Escape Zeichen
\a
\b
\f
\n
\r
\t
\v
\ddd
\xhhh
Alert
Backspace
Seitenvorschub
Neue Zeile
Carriage Return
Tabulator (horizontal)
Tabulator (vertikal)
Oktalwert (z.B eines ASCII-Zeichens, \007 = Bell)
Hexadezimalwert
Schleifen, Entscheidungszweige
while (condition)
{
statement
}
for (init; test; reinit)
{
statement
}
if (condition)
{
statement
}
[else
{
statement
}]
Innerhalb der while und for Schleife
break
continue
Sprung aus der Schleife und Fortsetzung dahinter
Sprung aus der Schleife an den Schleifenkopf
Unterbrechungen des awk-Programmes
next
getline
exit
Unbedingte Unterbrechung und von vorn mit neuem Record
Holt neuen Input Record und fährt im Programm fort
Abbruch des awk-Programms
Kommunikation mit dem Betriebssystem
system(cmd)
ENVIRON[var]
print > file
print >>file
print | cmd
Führt HP-UX Kommando aus und liefert exit Status
Array, welches die Shell-Umgebung enthält
Ausgabeumlenkung, anlegen/löschen bei Start
Ausgabeumlenkung, anhängen in jedem Fall
Piplining (aktuelle Zeile auf STDIN des HP-UX-cmds)
Arrays
split(s,a,c)
s in a[1] ...a[n] nach c (=Separator) zerlegen; liefert
n zurück
for (var in array)
{
statement
}
Holt Array Elemente zurueck
delete array[x]
löscht ein Array Element
Funktionen
Funktions-Definitionen stehen anstelle eines Pattern-Action-Paares
function f(x,y,...)
{
cmd1; ...
}
return(x)
Beendet Funktion und liefert x zurück