AWK �ˤ��ǡ�������(1)
�ܼ�
AWK �Ȥ�
Awk �� �ե���������� ��Ū�Ȥ����� ���� �ץ���������Ǥ���
grep ���� �ѥ������ �ޤ� �Ԥ� ɽ������ �Τ� �Ф��ơ�
awk �� �ѥ������ ������ ���������� �ƤФ�� ������ �Ԥʤ��ޤ���
�Ϥ����
���ޡ� ���ʤ��� �бĤ��� ��Ҥˡ� Beth, Dan, Kathy,
Mark, Mary, Susie �� 6�ͤ� ���Ȱ��� ���ơ�
���줾�졢 �㤦 ���ֵ�� ������ä� ����� ���ޤ���
�ޤ��� ���β�Ҥ� �ե�å��� ���������� �ȤäƤ���
���줾�줬 Ư���Ƥ��� ���֤� �㤦 �Ȥ��ޤ���
���뽵�� ��̳���֤� ɽ�� �����Τ� �ʲ��� �Ȥ���ǡ�
���� �ǡ����� emp.dat �� ����̾�� �ե������
��ä� ���� ���Ȥ� ���ޤ���
Beth 4.00 0
Dan 3.75 0
Kathy 4.00 10
Mark 5.00 20
Mary 5.50 22
Susie 4.25 18
|
������ ���ʤ����� �������֤�� ¿�� Ư���� ���Ƥ� ���Ȱ��� ̾���� �¶�
�� ɽ�������� �� ���ޤ��� ���ΤȤ��� awk �� �Ȥäơ� ���� �褦�� ����
����� �褤���Ȥ� �ʤ�ޤ���
sw99% awk '$3> 0 { print $1, $2 * $3 } ' emp.dat
Kathy 40
Mark 100
Mary 121
Susie 76.5
|
���� ���ޥ�ɥ饤��ϡ� ������� ��� �ץ������� �Ȥäơ�
���ϥե����� emp.dat ���� �ǡ����� �ɤ߹���� awk �������� �褦�� ���Ƥ��ޤ���
������� ��� �ץ������ϡ� �ѥ��������ȡ� �С� �� �Ϥޤ줿 �����������
�� ʬ��� ���ޤ���
�ѥ����� $3 > 0 �Ǥϡ� 3 ���ܤ� �󤬡� �������
�ç¤ï¿½ï¿½ï¿½è¤¦ï¿½ï¿½ �Ԥ�
Ŭ�礹�� ���Ȥ� ɽ���ޤ���
��������� { print $1, $2 * $3} �ǡ����줾�� Ŭ�礷�� �Ԥ�
��1�� ��2��� ��3��Ȥ��� �� ɽ������ ���Ȥ� �ؼ����ޤ���
$ �� >, { ,} �� ���ä� ʸ������ C������� �ü�� ��̣�� ���Ĥ��ᡢ
���󥰥륯������ �ʡǡ� �� ���������פ��Ƥ��� ���Ȥˤ� ���դ��� ����������
Ư���ʤ��ä� ���Ȱ��� ̾���� ��������ˤϡ� ���� �褦�� ���ޤ���
sw99% awk '$3 == 0 { print $1 } ' emp.dat
Beth
Dan
|
�����Ǥϡ� �ѥ����� $3 == 0 �� 3���ܤ� �� ������ �������褦�� �Ԥ�
Ŭ�礷�� ��������� { print $1} �� ���� �Ԥ� �ǽ�� ��� ɽ�����ޤ���
Awk��
Awk �ץ������� �ҤȤİʾ�Ρ� �ѥ����� { ���������} �� ��
���� �ʤä� ���ޤ���
���� �褦�� ���ޥ�ɹԤ� ���Ϥ��� �ߤƲ�������ʣ���Ԥ�
�錄�ä� ���ޥ�ɤ� ���Ϥ� �ʤ�ޤ��Τǡ� �꥿����� ������
���ޤäƤ��� �ְ㤤�� ���� �դ����� Ctrl+C �����Ǥ���
�ǽ餫�� ����� ��������
sw99% awk \
'$3 > 0 { print $1, $2 * $3 } \
$3 == 0 { print $1 } ' emp.dat
Beth
Dan
Kathy 40
Mark 100
Mary 121
Susie 76.5
|
���줾��� �ѥ����� Ŭ�礹�� �Ԥˡ� ���������� ������
�ʤ���Ƥ��� ���Ȥ� �狼��� �פ��ޤ���
�ѥ����� ���������� �ɤ��餫�� ��ά���� ���Ȥ� �Ǥ��ޤ���
���������� ��ά�����Ȥ��� ���ι� ���Τ� ɽ������ޤ���
��grep�� Ʊ���� �ʤ�ޤ���
�ѥ������ ��ά���� �Ȥ��ϡ� ���Ƥ� �Ԥ� �Ĥ��� ����������
������ �Ԥʤ��ޤ���
�Ǥ����顢 emp.dat �� ���� ���Ȱ��� ̾���� ���� ɽ������ˤϡ�
���� �褦�� ����� �褤���Ȥ� �ʤ�ޤ���
sw99% awk ' { print $1 } ' emp.dat
Beth
Dan
Kathy
Mark
Mary
Susie
|
Awk �μ¹�
Awk �� �ե��륿�� ���ޥ�ɤǤ� ����ޤ���
�⤷�� �о� �ե������ ���꤬ �ʤ��Ȥ���
ɸ������ ����� �Ԥ� �������ޤ���
sw99% cat emp.dat | awk ' { print $1 } '
|
Awk �ץ�����ब Ĺ�� �ʤ�ȡ� ���ޥ�� �饤��� ��������
���Ҥ���Τ� ���ݤǤ���
���顼�� �����ä� �Ȥ��� �б��� �Ǥ��ʤ� �ʤ�ޤ���
���Τ��ᡢ awk �ץ������� �ե������ ���Ҥ��� �������Ȥ� �Ǥ��ޤ���
���� �褦�� ��Ȥ� �ե������ pay.awk �Ȥ��� ̾���� �������ޤ��礦��
$3 > 0 { print $1, $2 * $3 }
$3 == 0 { print $1 }
|
Awk �� ��ư���� ���ˡ� -f ���ץ����� �ץ������ �ե������
���ꤹ�� ���Ȥ� �Ǥ��ޤ���
sw99% awk -f pay.awk emp.dat
|
ñ��ʽ���
�����ιԤ�ɽ��
printʸ�� ������ �����ʤ����� ���Ϲ� ���Τ�Τ� ɽ�����ޤ��� �Ǥ����顢
{ print }
�� ���� ������Τ� ���� ɽ������ ���Ȥ� �ʤ�ޤ���
�ޤ�, $0 �� �����Τ� ����路�ޤ��Τǡ� ���ʤ����Ȥ�
{ print $0}
�Ǥ� �Ǥ��뤳�Ȥ� �ʤ�ޤ���
��������ɽ��
printʸ�� 1�� �ʾ�� ���ܤ� Ʊ�� �Ԥ� ���Ϥ��� ���Ȥ� �Ǥ��ޤ���
�㤨�С� ���줾��� ���ϹԤ� �ǽ�� 3���ܤ� ��� ɽ������
�ץ������� ���� �褦�� �ʤ�ޤ���
{ print $1,$3 }
��ο�NF
��� �ֹ�� ɽ�� �ѿ��� $ �� ��� �� ���Ȥ� �Ǥ��ޤ���
�㤨�С� �ѿ� NF �� ���ߤ� ���ϹԤ� ��� ���� ���ä� ���ޤ���
�������äơ�
{ print NF, $1, $NF }
�����ϹԤ���ο��ȡ����ιԤκǽ�ȺǸ��ɽ�����ޤ���
�׻�
{ print $1, $2 * $3 }
�Τ褦�� �׻����� �񤤤ơ�
���� ��̤� ɽ�������� ���Ȥ� �Ǥ��ޤ���
Awk �Ǥϡ�+(��)�� -(��)�� *(��)��
/(��) �� �ۤ��� C����� �Ȥ��� ���ޤ��ޤ� �黻��
���� �Ǥ��ޤ���
���ֹ��ɽ��
�ѿ� NR �� ����ޤǤ� �ɤ߹���� �Ԥ� ���� ���ä� ���ޤ���
���ϹԤ� �ƹԤ� ���ֹ�� �դ�ˤϡ� ���� �褦�� �ץ������
�� �Ѥ��ޤ���
{ print NR, $0 }
ʸ�Ϥν���
��� �׻���̤� �֤� ʸ���� ɽ������ ���Ȥ� �Ǥ��ޤ���
{ print "Total pay for", $1, "is", $2 * $3 }
���Τۤ��ˡ� printf �� ���� �ؿ��� �Ȥ��ȡ� ����� �Ťä�
ɽ���� ���� ���Ȥ� �Ǥ��ޤ��� ���� ��ˡ�� �Ĥ��Ƥϡ�
C ����� printf �� ���äƤ��顢 ���ͽ�� ���� �Ф��� ��������
�ѥ�����ˤ������
Awk �Ǥ� �ѥ��������� �Ȥäơ� ��̣�� ���� �Ԥ����� ����Ǥ��ޤ���
����ˤ� ���ޤ��ޤ� ��ˡ�� �Ѥ��� ���Ȥ� �Ǥ��ޤ���
��Ӥˤ������
$2 >= 5 �� �褦�ˡ� ����� ��� �ͤ� �������� �ç¤ï¿½ï¿½
�ʤޤ��� �������� ���Ȥ� ���� ����� �����ʤ� ���Ȥ� �Ǥ��ޤ���
��Ӥ� �Ԥʤ� �黻�Ҥˤϡ�
> | ���դ� ���դ�� �ç¤ï¿½ï¿½
|
---|
>= | �ç¤ï¿½ï¿½ï¿½ï¿½ ������
|
---|
== | ������
|
---|
<= | �������� ������
|
---|
< | ������
|
---|
������ޤ���
���������Ȥ� ɽ���Τˡ� ����� 2�� �Ťͤ� ���Ȥ� ���դ��� ����������
�׻��ˤ������
��Ӥ� �оݤˤϡ� �׻��� ��̤� �Ȥ� ���Ȥ� �Ǥ��ޤ���
emp.dat �� ��� �¶⤬ 50�ɥ�� �ۤ��� ���Ȱ��� ���֤ˤϡ�
$2 * $3 > 50
�Ȥ��� �ѥ������ �Ȥ��ޤ���
ʸ����Ȥˤ������
Grep �� �Ԥʤä� ���� �褦�ˡ� ����� ʸ����� �ޤ� ���ϹԤ�
���򤹤� ���Ȥ� �Ǥ��ޤ���
���� �ץ������Ǥϡ� �ǽ�� �� �� Susie �� ����褦��
���Ƥ� �Ԥ� ɽ�����ޤ���
$1 == "Susie"
�Ԥ� ��� �ɤ����� Susie �� ���� ʸ���� ����� ���򤹤� �Τ� ����С�
/Susie/
�Ȥ��� ������ �Ϥ�� �ѥ������ �Ѥ��� ���Ȥ� �Ǥ��ޤ���
�ޤ��� 2�Ű������ ������ �Ϥ�� ʸ����ˤϡ� grep �� �ؤ��
���� ɽ�� (regular expression) �� �Ȥ� ���Ȥ� �Ǥ��ޤ���
�ѥ�������Ȥ߹�碌
���ä��� �֤��ġ� (&&) �֤ޤ��ϡ� (||) ������� (!)
�� �Ȥäơ� �ѥ������ �Ȥ߹�碌�� ���Ȥ� �Ǥ��ޤ���
�㤨�С� ���� �ץ������� $2 �� 4�ʾ夫�� $3�� 20�ʾ��
�Ԥ� ɽ�����ޤ���
$2 >= 4 || $3 >= 20
BEGIN �� END
BEGIN �� �ǽ�� �ɤ߹��� �ե������ �ǽ�� �Ԥ� ���� Ŭ�礷��
END �� �Ǹ�� �ե������ �ǽ��Ԥ� ������ ����ä� ��� Ŭ�礷�ޤ���
���� ��Ǥϡ� ���Ф��� ������ BEGIN�� ���Ѥ��� ���ޤ���
BEGIN { print "NAME\tRATE\tHOURS"; print " " }
{ print }
���ߥ������ ���ڤ뤳�Ȥǡ� ʣ���� ʸ�� �ҤȤĤ� ������������� �� ���Ȥ�
�Ǥ��ޤ���
�ޤ� print " " �Ǥ� ���Ԥ� ɽ���� �����ʤä� ���ޤ���
����
�Ȥꤢ���������ԤΥ��ޥ�ɤǤǤ������ʤ�Τ��������ޤ���
�ե�����̾�����Ϥ�˺���ȡ�ɸ���������ɤ⤦�Ȥ��ޤ���
Csh �Υץ���ץȤ��ФƤ��ʤ��ʤ�ޤ��Τǡ�Control+D ��
ɸ�����Ϥ�λ����������Control+C �ǥץ�������λ������
����������
- emp.dat ���椫�� Mark �ε�����׻�����ɽ�����ʤ�����
- emp.dat ���椫�� 20���ְʾ�Ư�����ͤ�̾����ɽ�����ʤ�����
- ��ʬ�� �����֤Τ��Ť���Ģ �� acc.dat �Ȥ���̾���Ǻ������Ƥ���������
acc.dat ���椫�鿩��ζ�ۤ���Ф���ɽ�����ʤ�����
- acc.dat ���椫�� other �����줿���ܤ�ɽ�����ʤ���(�㡢socks books etc)
- acc.dat ���椫�� lunch �򿩤٤�����ɽ�����ʤ�����
�ʾ�μ¹ԥ��ޥ�ɤ� acc.dat �����Ƥ�ô�������إ᡼����������ʤ�����