8.5 Actions

Action statements sind in geschweifte { Klammern } eingeschlossen. Actions sind i.d.R. Zuweisungen, bedingte Anweisungen, Schleifen und I/O-Anweisungen

8.5.1 Operatoren

Die Operatoren von awk sind mit den Operatoren von C vergleichbar.

       = += -=     	Zuweisungsoperatoren können auch in der verkürzten
       *= /= %= ^= 	Form op=  verwendet werden.

       ?:          	Der 'conditional  expression' von C in der Form
                         	expr1 ? expr2 : expr3.
                   	Wenn expr1 wahr ist, wird der Wert von expr2 verwendet,
                   	andernfalls der Wert von expr3.

       ||          	Logical OR.

       &&          	Logical AND.
			$1 ~ /^d/ && $3 ~ user && $9 ~ /^[^\.] /{ Summe += $5 }


~ 		Match mit Regular Expression
!~ 		Negierter Match.
Achtung: 	Der RE sollte nur auf der rechten Seite verwendet
 		werden.
		/RE1/  ~  /RE2/  wird vom awk wie folgt interpretiert
 		(( $0 ~ /RE1/) ~ /RE2/ )

       < >         	Vergleichsoperatoren
       <= >=
       != ==

       blank       	String concatenation.

       + -          	Addition and Subtraktion.

       * / %       	Multiplikation, Division und Modulus (Divisionsrest).

       + - !        	Unary Plus, unary Minus, und logische Negation.

       ^           		Potenzierung (**  ist auch möglich sowie **=
 			als Zuweisungsoperator).

       ++ --       	Increment und Decrement, Beide können als prefix
                   		und postfix verwendet werden.
				x++     ;        --z

       $           		Field reference.
  


8.5.2 übungsaufgaben I

Was geben folgende Anweisungen aus ?
1. ls -l | awk '$3 ~ "root" || $3 ~ "hahn" ' 2. ls -l | awk '$3 ~ /root|hahn/ ' 3. awk -F: ' { print $1 $3 } ' /etc/passwd | more 4. awk -F: ' { print $1, $3 } ' /etc/passwd | more 5. awk -F: ' { print $1 "," $3 } ' /etc/passwd | more 6. ls -l | awk ' $1 ~ /^d/ {print $1, $9} ' 7. ls -l | awk ' $1 ~ /^d/ && $3 ~ "hahn" && $9 !~ /[^\.]/ { print $5, $9 } 8. ls -l | awk ' $1 ~ /^...s/ ' 9. ls -l | awk ' $3 ~ /root/ && $1 ~ /^........w/ ' 10. ls -l | awk ' $5 == 0 && $1 ~ /w+/ { print $1, $2, $5, $9 } '