AWK �ˤ��ǡ�������(2)

�ܼ� ���줫�� �ФƤ��� awk �ץ������� Ĺ����Τ� ¿�� �ʤ�ޤ��� Ĺ�� �ץ������� �ե������ �������� �¹Ԥ��ޤ��礦��

AWK �ˤ��׻�

BEGIN �� END �� ���ޤ� �Ȥ��ȡ� ��� ��� �ʤɤ� �׻��� �����ʤ� ���Ȥ� �Ǥ��ޤ���

�����夲

���� �ץ������� 15���� �ʾ� Ư���� ���Ȱ��� ������Τˡ� �ѿ� emp �� �Ȥä� ���ޤ���
$3 > 15 { emp = emp + 1 }
END { print emp, "employees worked more than 15 hours." }
3���ܤ� �� 15�� �ۤ���褦�� �Ԥ� �ɤ߹��� ���Ӥˡ� ����ޤǤ� emp �� �ͤ� �ҤȤ� ���䤷�� ���ޤ��� ���� �Ȥ��� ���Ѥ���� awk �� �ѿ��ϡ� �ǽ�� �� 0 ���� �Ϥޤ�ޤ��� �������äơ� emp �� ��������� ɬ�פ� ����ޤ���
��� awk �ץ������� m15.awk �Ȥ���̾���Ǻ������Ƥ������ʲ��Τ褦�˼¹Ԥ��ޤ���
sw%99 awk -f m15.awk emp.dat 
3 employees worked more than 15 hours.
�ʲ���Ʊ�ͤ� awk �ץ������ե�����κ����ȼ¹Ԥ��������Ʋ�������

�¤�ʿ�Ѥη׻�

���Ȱ��� ���� ������Τˡ� ����ޤ� �ɤ߹���� �Կ��� ���� �Ȥ߹��� �ѿ� NR �� ���� �Ǥ��ޤ���
    { pay = pay + $2 * $3 }
END { print NR, "employees";
      print "total pay is",pay;
      print "average pay is",pay/NR;
    }
�Ȥ��� �ץ������ϡ� �¶�� ��פ� pay �� �û����� �����ޤ����顢 �Ǹ�ˡ� ���Ȱ��� ���� ����¶⡢ ʿ���¶�� ɽ������ ���Ȥ� �ʤ�ޤ��� ��ĤΥ�����������ʣ����̿��(��)��񤯤Ȥ��� ; (���ߥ�����)�� ���ڤ�ޤ������ print ����Ǥ�ɬ������ɬ�פǤϤ���ޤ��󤬡� �����Ȥ�������Ƥ����������褤�Ǥ��礦��

ʸ�Ϥ����

Awk �Ǥϡ� ���� �����Ǥʤ� ʸ����� �ѿ��� ����� ���Ȥ� �Ǥ��ޤ���
$2 > max { max = $2; who = $1 }
END { print "Highest hourly rate:", max, "for", who }

ʸ�����Ϣ��

ʸ����� �Ĥʤ� ��碌�ơ� ������ ʸ����� ��� ���Ȥ� �Ǥ��ޤ��� ���� ʸ������ Ϣ�� �� �ƤӤޤ���
    { names = names $1 " " }
END { print names }

�Ǹ�ιԤ�ɽ��

�Ȥ߹��� �ѿ� NR �� END �� �¹Ի��ˤ� �ͤ� �ݻ����� ���ޤ����� $0�� �����Ǥ� ����ޤ��� ���� �ץ������� �Ǹ�� ���Ϲ� ������ ɽ�����ޤ���
    { last = $0 }
END { print last }

�����ޤȤ�ƽ���

��ν�����ޤȤ�ư�Ĥ� awk �ե�����˽񤯤��Ȥ�Ǥ��ޤ���
BEGIN { print "*** Employee Statistics ***" }

$3 > 15 { emp = emp + 1 }
    { pay = pay + $2 * $3 }
$2 > max { max = $2; who = $1 }
    { names = names $1 " " }
    { last = $0 }

END { 
      print "Employee list:", names;
      print NR, "employees";
      print emp, "employees worked more than 15 hours." ;
      print "total pay is",pay;
      print "average pay is",pay/NR;
      print "Highest hourly rate:", max, "for", who ;
      print "Who was the last:",last;
    }

���϶��ڤ�Ҥ��ѹ�

Awk �� ��ư���� �ݤ� -F ���ץ����� �Ȥ����� �Ȥ߹��� �ѿ� FS �� �Ȥ����Ȥǡ� ���Ϥ� ����ڤ�� ɽ�� ʸ���� �ѹ����� ���Ȥ� �Ǥ��ޤ��� �㤨�С�awk -F: ... �� {FS = ":"} �Τ褦�� ���ꤹ��� ���Ϥ� ����ڤ�Ҥ� �� �� �Ѥ��ޤ���

�����ƥ��ͭ�Υ桼��(root �� lp �ʤ�΢���λŻ��򤹤�褦�ˤʤäƤ��ޤ�) �� /etc/passwd ���������Ƥ��ޤ��� ���Υե�����Ǥ� �ƹ��ܤ� �� �� ���ڤ��� ���ޤ����顢

sw99%  awk -F: '$1 == "root" {print $5}' /etc/passwd
�Ȥ���С� root ����� ��̾�� �ФƤ��ޤ��� �ͥåȥ�����󥷥��ƥ� NIS+ ����Ͽ���줿�桼���ξ����̤Υ��ޥ�ɤ� �桼������Υꥹ�Ȥ�ɽ�����뤳�Ȥ��Ǥ��ޤ��� ��â���� awk �� �Ȥ�ʤ��Ƥ⡢ finger ���ޥ�ɤ� �Ȥ��� ��̾�� ����¾�� ���� ɽ������ޤ�����

�ʾ�Τۤ��ˤ⡢ awk �� �Ȥ߹��� �ؿ��䡢 if-elseʸ�� whileʸ�� forʸ �ʤɤ� �Ȥä� ʣ���� �׻��� �ץ����������� �����ʤ� ���Ȥ� �Ǥ��ޤ��� ������ �ܺ٤� �Ĥ��Ƥϡ� C����� �ؤ�� ��� ���ͽ� �֥ץ�����ߥ󥰸���AWK�� �����ۡ� �����˥ϥ� �磻��С��������� ­Ω�� �ʥȥåѥ� 3,400�ߡ� �� �ɤळ�Ȥ� ����ޤ���

��������

  1. ���٤Ƥ� ���ϹԤ� ��� ������ ɽ������ �ˤ� �ɤ������� �褤�� ���礦�� �ʥҥ�ȡ� ��� ���� NF �� ���ä� ���ޤ�����
  2. �Ǹ�� �Ԥ� �Ǹ�� ��� ɽ������ˤ� �ɤ������� �褤�Ǥ��礦��
  3. ����μ��ȤǺ������� acc.dat ���顢ʬ�ब in �ζ�ۤ��פ��� ɽ�����ʤ�����(�ѿ�̾�� in ��Ȥ��ȡ�ͽ���פΤ��� ���顼�ˤʤ�ޤ�)
  4. acc.dat ���� ʬ�ब eat, other �ζ�ۤ򤽤줾���פ���ɽ�����ʤ�����
  5. acc.dat ���顢�����֤μ���(�긵�˻Ĥä����)��׻�����ɽ�����ʤ�����
�������� 3,4,5 ��Ʊ���˹Ԥ� awk �ץ�������������� ����ô���Ԥإ᡼����������ʤ�����(ź�դϻȤ鷺�����ԡ����ڡ����� ���Ƥ���������)

awk ��Ȥä��񤷤������⤢��ޤ���