Guido Socher � ������: ����� ������ ������, ��� ��� ��������� ������� � ����� ���������� ����� ������������ �������� � Linux ����������� ����� ����. �� �������� ���� ��������� ����� �� ����� ���������, ������� ����� BBC, �������� �� ��������� �� ������ ���� � �������� ������������ ����� � Linux. �������� ������ ����������: �������� ������� ������ ��������� ������������� ���������� ��������� ��� �������������� ������ |
���������� ���������������: ���������� ��������� ������������ ��� ������������ ������������ ������ � ����������� ������. ��� ����� ���� �� ������ ���������������� ����������, � ���������� ��������������� ������� (parser programs) � � ������. ������������������ ��������� ����������� �� ������ ���������� ����� ��� vi � emacs, � ���������� grep/egrep � ������ ����� ��� awk, perl � sed. ���������� ��������� ������������ ��� ������������ ������������ ������ � ����������� ������. ���������� ��������� - ��� ���������� �������� �������, ������� ������������ ��������� ������. ����� � ������ ��������� ��� ����� ��������, ������������� ���������� ���������, � ��� ��������. ������ �������������� � ������ ������, ������� ������ �������� ����, ����� ���� ��������� ������ �� ��������� ������. ������ � �� ������� ��� ���������, ������� � ������ �� ������. ��� ��������� ��� �������� ���������� �����, ������, ��������� � ��������� ������ ��������. ����� � ����� ������ ��� ��� �������� � � ����������� � ���������, ��� ��� ����� ����� � �������������. ��� ����������� ���������� ������� �������������� ��������. ���� ���������� ��������� ����� ������ �������������� � ���� Unix, �� �� ���������� ����� ����� ��� '����������� ���� ���������� ���������'. ���������� ��������� ��������� ���������. �������� ���������� ��� ���� ��������� grep; grep � egrep. ��� ���������� ���������� ��������� � ������������� ������������� �������������. Perl �������� ����� ����� ������ ����� ���������� ���������. � ������� ��� ��� ������� ����� ���������. ��� ������ �� ������� �������� ����, �� ��� ����� ����� ������� ������ ��������� ���������. ��� ������ ������ ��� � ������ � �� ������� ������� ��������� ������� � ����������� �������� �� �� man-���������. ������� ����������� �� ������ ������ ��������� �������� � �� �������� ������� �����: Phone Name ID ... ... 3412 Bob 123 3834 Jonny 333 1248 Kate 634 1423 Tony 567 2567 Peter 435 3567 Alice 535 1548 Kerry 534 ... ��� �������� �� 500 �������. ��� ������ ������ � ������� ��������� �����. ������� � ������ ������ ����������� ������ ������ 1 �������� � �������� N 1. ��� �������� � �������� 1 ? ���������� ��������� ������ �����: grep '^1' phonelist.txt ��� egrep '^1' phonelist.txt ��� perl -ne 'print if (/^1/)' phonelist.txt �� ������ ��� ������, ������ ��� ������, ������� ���������� � �������. "^" ������������� ������ ������. ��������� ����� ������� ��������� ������������� ������ ��� �������, ������� ���������� � �������. ����������������������� ��������������� ������������ ������ ���������� ��������� �������� �������������� ������. �� ������������� ������ ����� �������. �������� ��������������� ������� �������� 1 � ���������� �������. ��� ������ ������������� ������� � ������. ������ ������ ��������������� �������: egrep 'Kerry' phonelist.txt ���� ������ ������� ������ �� �������������� �������� (����� K,e...) ������� ����� ���� ������������� ������ � �����. ����� �������������� ��� ���� �� ����������� � ����������� ���������� ������ � ������ �������� ����� ����. ����� ������������ ����� ����� �������������� ������. ���� � ������ ���� �� ���� �������� ������ �������������� � ������, ������� �������� � ��������. �� ������: [abc] �������������� ������, ������� ������������� ����� ���� �� ���� a, b ��� c. [ab0-9] �������������� ������, ������� ������������� ���� a, ���� b, ���� ����� � ��������� �� ���� �� ������. [a-zA-Z0-9\-] ��� ������������� ���� ����� � ������� ��� ������ ��������, ����� ��� ����� �����. ���������� ���: egrep '^1[348]' phonelist.txt ��� ���� ������, ������� ���������� � 13 ��� 14 ��� 18. �� ��� �������, ��� ����������� ASCII �������� ������ ������������� ���� �� ASCII ��������, �� ��������� ASCII �������, ���������� �������������, ����� ����������� ��������. �������� ���������� ������ ������������ �����. ����� "-" � ������ ��� ��������. ����� �������� ����������� �������� ����������� ����� ��������� ����� ��� �������� ����. ������ ����� - ���� ����� � [a-zA-Z0-9\-]. � ��������� ��������� ���������� ��������� ����������� ���������� � ��������� �����. � ���� ������ �� ������ ������� �������� ����, ��� �� �������� ���������� �������� �������. ����� ��� ������ ����������. ��� ������������� ������ ������� ����� ������� ����� ������. ������: grep '^.2' phonelist.txt or egrep '^.2' phonelist.txt ��� ��������� ������������ ��� ������ ����� � ������ 2 �� ������ ������� � ����� ������ ��������. ���� ����������� ������ ���������� � "[^" ������ "[" �� ��� �������� ��������� ����� ������ (��� ������� ����� ���������). ������ "^" ������ �� �������� ������ ������, �� � ���������� � "[" ���������� ��������� ������. [0-9] �������������� ������, ������� ������������� ����� ����� �� 0 �� 9. [^0-9] ������������� ������ ������ �� ��������� �������. [^abc] ������������� ������ �������, ������� �� a,b ��� c. . ����� ������������� ������ ������� �������� ������ ����� ������. ��� ���� ����� ��� [^\n]. ��� \n - ������ ����� ������. ��� ���������� ���� �����, ������� �� ���������� � 1 �� ����� ��������: grep '^[^1]' phonelist.txt ��� egrep '^[^1]' phonelist.txt ������������ ��������� ���������� ����� �� ��� �������, ��� "^" ������������� ������ ������. ������������ �������� ������������ ��� ������ ����������� ��������, ������� ������������� ������������ ������� � ������, � �� ������ �������. ^ ������������� ������ ������ $ ������������� ����� ������ ����� ����� �������� � ID ����� 567 � ����� phonelist.txt �� ����� ������������: egrep '567$' phonelist.txt ��� ������� ������ � ������ 567 � �����. ��������� ��������� ���������� ������� ��� �������������� ������
����������� � ������.
����������: ��������� VI'� ����� ���������� ����� ��������� ��� ���� ����� ��� �������� ��� �������� ����. ������ �� ����������� ������: .... 1248 Kate 634 .... 1548 Kerry 534 .... ��� ���������� �����, ������� ���������� � 1, � ����� ��������� ����, ��� ������� ���� ������ � ��� ������������ � ����� � �� ����� ��������: grep '^1[0-9]\{1,\} \{1,\}K' phonelist.txt ��� ������������ * � ��������� [0-9] � ������: grep '^1[0-9][0-9]* *K' phonelist.txt ��� egrep '^1[0-9]+ +K' phonelist.txt ��� perl -ne 'print if (/^1[0-9]+ +K/)' phonelist.txt ��������� ���������� ���������� �������������� ������. ��� "23*4" �� �������� "2 , ����� 3, ����� ��� ������ � 4" (��� �������� ��� "23.*4"). � ��� �������� "���� ��� 2 ����� ����� ���� ��������� 3 � ���� 4" ��� �� ����� ������, ��� ��������� �������� ���������. ��� ��������, ��� �������� ������� ��������� � ������� ���������������� �������, ��� ������ ��� ��� ��������. ��������� ^1.*4 ����� ��������������� ���� ������ 1548 Kerry 534 � ������ � �� ����� ��������� 4. �.�. ��� ������������� �� ������ 154, � ���� ������. ��� �� ����� �������� �������� ��� grep, �� ����� ��� �������������� � �����������. ������� ������ ��� ������ ������������������ ������ �� �������� �������� ���������, ��� ���� ������ ������������ ������������ �������� ����� ������ ��� ����, ����� ����� ���� ��������� �� ��� � ��������� �������. ����������� ����� �������� ����� ����������. ����� ������ ������������
������ ����� ������ �������� ����� ���������� ����, ������ ����� ����������
��� � �.�.
������: ��������� [a-z][a-z] ����� ��������������� ���� ������ � ������ ��������. ������ �� ����� ������������ ��� ���������� ��� �������� �������� ��� ������ ������ ������ ��� 'otto': egrep '([a-z])([a-z])\2\1' ���������� \1 �������� ����� � � ���������� \2 ����� t. ��� ����� ��������������� ����� anna, �� �� yxyx. ������� ������ ��� ������ ����������� �� ��� ����� ������������ ��� ���������� ����� ���� ��� otto � anna, � ����������� ��� �������������� � �����������. ������������� ���������� ��������� ��� �������������� ��������� �������������� ��� ��������� �������� ����� ��� vi, emacs ��� �� ������ ������������ �������� perl. � emacs �� ����������� M-x query-replace-regexp ��� �� ������ ��� ����� �������������� ����� �������������� �������. ��� �� ������ ����� ������������ ������� replace-regexp. ������� query-replace-regexp �������������, ������ ���. � vi ������������ ������� ����������� :%s/ / /gc. ������� ���������� �������� '���� ����' � ����� ���� ������� ����� ���������� ����������. � vim �� ��������� shift-v, ��������� ������� � ����� ����������� ����������� ������ � ���� �������. � �� ���� �������� ������ � vim ������, ��� ��� ������ ���� � ��� ����������� �����������. ������������� ������ ������� ��� 's/ / /gc', � �� ������������� ��� s/ / /g ��������������� ��������, ��� �� ������ ������ ����������� ��������� ��� ��� ����������� � ������ ������. � Perl'� �� ������ ������������ perl -pe 's/ / /g' ���������� ��������� ��������. ���� ��������� � ����� �������� ��������� � �� ���� ���������� �������, ������� ���������� � 1 ���������� �������� 2 ����� ������ �����. �������� 1423 ������ ����� 14223. ������ ������: Phone Name ID ... 3412 Bob 123 3834 Jonny 333 1248 Kate 634 1423 Tony 567 2567 Peter 435 3567 Alice 535 1548 Kerry 534 ... ��� ������� ���: vi: s/^\(1.\)/\12/g emacs: ^\(1.\) ���������� �� \12 perl: perl -pe 's/^(1.)/${1}2/g' phonelist.txt ������ ����� ������ ��������� �������� ������� �����: Phone Name ID ... 3412 Bob 123 3834 Jonny 333 12248 Kate 634 14223 Tony 567 2567 Peter 435 3567 Alice 535 15248 Kerry 534 ... ���� ����� ������������ ���������� � �������� ������ ��� �� \1 �� \9 ������� \12 ����� ��������� �� 12-� ���������� ������� ������ ������. ��� ����������� ����� �� ������ ���������� ${1}. ������ ������������ � ������ ������� ��������. ��� �� ������ ��� ��������� ? �� ������ ������ ��������� ���� �� ������ � 5-� ������� � ���� ����, �� �������� ��� ����: vi: s/^\(....\) /\1 /g emacs: '^\(....\) ' replaced by '\1 ' perl: perl -pe 's/^(....) /${1} /g' phonelist.txt ������ ���������� ������ �������� ���: Phone Name ID ... 3412 Bob 123 3834 Jonny 333 12248 Kate 634 14223 Tony 567 2567 Peter 435 3567 Alice 535 15248 Kerry 534 ... ������� � ������ ��������������� ������ � �������� �������� ��������� �������� � ������ ��������� �����. ��� �� ����� ������� �� ? Phone Name ID ... 3412 Bob 123 3834 Jonny 333 12248 Kate 634 14223 Tony 567 2567 Peter 435 3567 Alice 535 15248 Kerry 534 ... ��� ������ ������: vi: s/^ *// (����� 2 �������, �.�. �� �� ����� +) emacs: '^ +' �������� ������ ������� perl: perl -pe 's/^ +//' phonelist.txt �� ������ ��������� � � ��� � ��� ���� ���������� temp � temporary. ������ �� ������ �������� ���������� temp ���������� counter. ���� �� ������ �������� ������ temp �� counter, �� ����� ���������� temporary ������ counterrary, ��� ������ �� ��, ��� �� ������. ���������� ��������� ����� ������� ���. ������ ������ temp([^o]) �� counter\1. ��� ������ temp ��� ����� o. (�������������� �������� ����� ���� ������������� ������, �� �� �� ������������� ���� ������ �������� �������.) � �������, ��� ��� ������ ��� ��������������. ������ �� ������ �������� ��������� � man-�������� � ������������ ������ �������� ��������� � ������� �����������. ���� ��� ����� ������ ����������� �������� ����� ���, �������� ������� �������, ���� "���" � ����� ������� ������ ����, ����������� ����. �����, ����������� ��������������. �������: ������ ������ ������ ������� |
This website is maintained by Miguel Angel Sepulveda © Guido Socher 1998 LinuxFocus 1998 |