|
��������
awk - ������������� � ��������� � �������������� ������
���������
awk [-F������] [[-f] ���������] [�������� ...] [���� ...]
��������
������� awk ������������ ������ �������� ������ � ���������, ������������� � ���������. ������� ����� ������
���� ��������������� � ��������� ������, ���� ���������
� ���� � ������ ��������� � ��������������� ������ -f.
���� ������� ������� � ��������� ������, �� �������
��������� � ��������� ������� ('), ����� �������� ������������� shell'��.
������� awk ����� ���� �������� ��������� � ���� x=... y=... � �.�. (��. �������).
����� �������� � ��� �������, ��� ��� ������. ���� �� ������� �� ������ ����� ��� ������ ��� -, ������������ ����������� ����. ���� ��� awk ������� �� ������, ����������� ����������� ��������. �� ��������� ��� ������� ������; � ����� ������ awk ������������ ���� ���������. ����������� ������� ����� ��������, ������������� ���������� RS. ������ ������ ������� �� ����, ������������ ������������� ����� (�� ��������� - ���������). ���� ����������� ����� ��������, ������������� ���������� FS ��� ������ ���� -F������. ���� �������� ����� �������� �� ������ $1, $2,...; $0 - ��� ������� ������.
��� ������� ������� �� ��������� ����� ���� ������ ��������, ������� ����� ����������� �� ������ �������, ������� �������������� � ��������. �������� ������-�������� ����� ���:
������ { �������� }������ �������� ������ �������������� � ������ �� ��������; � ������ ������ ����������� ��������� ��������. ����� ������������� �� ����� ��������� �������� ��������� ������ � ������� ������������� �����������. ����� ���� ������ ���� ������, ���� ��������, �� �� ��� ������. ���� ��� ������� ������� �� ������� ��������, �� ������ ������ ���������� �� ����������� �����. ���� ��� �������� �� ��������� ������, �� ��� ����� ����������� ��� ������ ������� ������. ������, ������� �� ������� ����������� �� ������ �������, ������������.
�������� ���� ������������������ ����������. ��� ��� ������� � �������� ����� ���� �������, ��, ����� ��������� �� � ���������, ��������� ���� ����� � �������� ������. �������� ���� ���� �� �����������:
if ( ������� ) �������� [ else �������� ] while ( ������� ) �������� for ( ���������; �������; ��������� ) �������� break continue { [ �������� ] ... } ���������� = ��������� print [ ������_��������� ] [> ��������� ] printf ������ [, ������_��������� ] [> ��������� ] next # ���������� ���������� ������� � ������� � ��������� ������ exit # ���������� ���������� ������
��������� ����������� ������ � �������, ��������� ������ ��� ������ �������. ������ ������_��������� �������� ��� ������. ��������� �������� �� ������� �������� � ����� � ������� �������� +, -, *, /, % � ������������ (������������ ��������). � ���������� ����� ����� ������������ �������� �� ����� C: ++, --, +=, -=, *=, /=, %=. ���������� ���������������� ������� ���������. ���������� ����� ���� ���������, ���������� ������� (������������ x[i]) ��� ������. ��������� ������� ����� ������� ����� (�� ����������� ��������) ������� ��������, ��� ��������� ����������� ������������� ������������� ������. ������� �������� ����������� � ������� ������� (").
�������� print ������ ���� ��������� �� ����������� ����� (��� � ����, ���� ������������ ����� >���������), �������� �� ������� ������������ ����� � �������� ������ ������ �������� ������������ �������. �������� printf ������ �� �� �����, �� ��� ����������� ������� [��. printf(3S)].
���������� ������� length ���������� ����� ������ ���������, ������������ ��� ��� ������� ��������; ���� �������� ������, �� ������������ ����� ������� ������. ���������� ����� ��������� ���������� �������: exp, log, sqrt � int (int ����������� ������� ����� ������ ���������). ������� substr(s, m, n) ���������� n-���������� ���������� ������� s, ������������ � ������� m. ������� sprintf(������, ���������, ���������,...) ����������� ��������� � ������������ � ��������� �������� [��. printf(3S)] � ���������� ���������� ������� ��������.
������ - ��� ������������ ���������� ����������, ������������ � ������� �������� !, ||, && � ������ �� ���������� ��������� � ��������� ���������. ���������� ��������� ����������� ��������� / [��������� ��. egrep(1)]. ��������� ���������� ��������� � ������� �������������� �� ���� �������. ���������� ��������� ����� ������� � � ��������� ���������. ������ ����� �������� �� ���� ��������, ����������� �������; ��� ���� ��������� �������� ����������� ��� ���� ����� ����� �������, ��������������� ������� �������, � �������, ��������������� ������� �������.
��������� ��������� - ��� ���� �� ��������� �����������:
��������� ����_������ ����������_��������� ��������� ����_����� ���������
��� ����_����� - ����� �� ����� �������� ��������� ����� C, ����_������ ��� ~ (����������) ��� !~ (�� ����������).
������� - ��� �������������� ���������, ��������� ��������� ��� �� ���������� ����������.
��� ���������� �����-���� �������� ����� ������ ��� ����� ��������� ������ ���������� ����������� ������� BEGIN � END. BEGIN ������ ���� ������ ��������, END - ���������. ��������, ��� ������������� ������� c � �������� ����������� ����� ����� ���� ��������� ��������� � ������ -Fc, ���� �������
BEGIN { FS = c }��������� ����������� ����������:
�������
awk 'length > 72' f1
awk '{ print $2, $1 }' f2
{ s += $1 } END { print "sum is", s, " average is", s/NR }��������� ������:
awk -f prog f3
awk '{ for (i = NF; i > 0; --i) print $i }' f4
awk '/start/,/stop/' f5
awk '$1 != prev { print; prev = $1 }' f6
/Page/ { $2 = n++ } { print }��������� ������:
awk -f prog n=5 f7
��. �����
egrep(1), lex(1), sed(1).
printf(3S) � ����������� ������������.
��������
������� ������� �� ����������� ��� ������, ���� ����
���� ������ ������������ ����������.
� ����� ������� awk ����������� ����� �������������� ����� ��������� �������� � �������. ����� ��������� ������������ ��� �����, ��������� � ���� 0; ����� ������������ ��� ������� - ��������������� ��� � ������ �������� ""
|