UNIX Basics
original in es Javier Palacios Bermejo
es to en Javier Palacios Bermejo,Ruben Sotillo, Manuel Rodriguez
en to chinese wang zhuohao
Javier����������ѧ���������ķ������ѧ�о�.�����︺�����һЩ����վ.�����ڲ��ŵ��ճ�����ʵ��Unixϵͳ����ɵ�.������һЩ�������������,��ѡ����slackware Linux. Linux�Եñ�Ŀǰ���е�����Unixϵͳ����.
���Ľ�����һЩʹ��AWK�����š���������һ�ݽ̲ģ��������н�����һЩʹ�õ����ӡ�
��������ڿ���Guido Socher��linuxfocus�Ϸ����ļ�ƪ���£�����д��ƪ���¡���Guido Socher����������һƪ�ǽ����ļ����Һ���������ģ�������ʶ��������ֻ����һ������ʹ�������С��ܶ�ʱ��Ư����ͼ���û����治�ܸ���������������ν��еģ�����windows���������������ķ���������һƪ�����ǹ��ڹ������ʽ�ġ������ڴ�����û�й�����ἰ����ı���ʽ����ҲҪ��awk�Լ������������sed��grep�����˽�ܶࡣ
����Ĺؼ���awk�����Ƿ���ĺ����á����ǿ϶��ġ���������ͨ�û����ı��༭�кܴ�����������Ű�ʲô�ġ�����ϵͳ����ԱAWK��һ���dz���Ҫ��Ӧ�á���㿴һ��/var/yp/Makefile ���ǿ�һ��ϵͳ�ij�ʼ���ű���AWK�ڵ�����ʹ���š�
���ѼDz��������ʲôʱ�������й�AWK����Ϣ���ҵ�һ��ͬ��Ҫ������Cray�������������������Cray�Ϲ���AWK�������������٣���˵��������������AWK��������������������Ҫ�ġ�
�ܳ�ʱ���Ժ������ٴο�ʼ���ǵĹ�����һ��ͬ�����������AWK������ļ�����ȡ�����еĵ�һ�дʣ�
awk ' '{print $1}' file |
���Dz��Ǻܼ�����һ���IJ���������Ҫ����C�����еĸ��ӱ�̡�һ��AWK����ͽ���ˡ�
������֪������δ��ļ��з���һ�к����DZ��������������ļ����ƵIJ�������files_list��.new��:
ls -1 pattern | awk '{print "mv "$1"
"$1".new"}' | sh
... ����,�����sed��grepһ��ʹ��,�ǽ����Ϊһ���dz����õĹ���.
ls -1 *old* | awk '{print "mv "$1" "$1}' | sed s/old/new/2 | sh
ls -l * | grep -v drwx | awk '{print "rm "$9}' | sh
ls -l | grep '^d' | awk '{print "rm -r "$9}' | sh
ls -p | grep /$
| wk '{print "rm -r "$1}'
�������иĽ�.) �������������ģ�AWK����Ҫ������ͬ�ļ���ʱ�����á�����дһ��AWK����Ҫ���ظ�20��ͬ���IJ���������˼��
ȷ�е�˵,��������˵ awk-command
,��awk����������ͨ����˵����������.awk��һ�ֿɱ������,AWK��һ������ĺܶ����C��������ı������ԡ�����awk���ͳ�����н��͵ġ�
����awk���ͳ������������
# gawk --help Usage: gawk [POSIX or GNU style options] -f progfile [--] file ... gawk [POSIX or GNU style options] [--] 'program' file ... POSIX options: GNU long options: -f progfile --file=progfile -F fs --field-separator=fs -v var=val --assign=var=val -m[fr] val -W compat --compat -W copyleft --copyleft -W copyright --copyright -W help --help -W lint --lint -W lint-old --lint-old -W posix --posix -W re-interval --re-interval -W source=program-text --source=program-text -W traditional --traditional -W usage --usage -W version --version Report bugs to [email protected], with a Cc: to [email protected]
����Կ�������������õ���������������������,ȥ�����������ǿ��Խ�����д��һ���ļ���Ȼ�������-f���С��������н��б��������õ�-v var=val�����DZ�������ӳ��������ԡ�������˵����AWK�ʺ��ڹ���������Ҳ���ǰ���Ϣ�ֵ�fields���ֶΣ���record����¼����
���Ե�˵,Awk���������������.Ҳ����һЩ�������ֶκͼ�¼�������Ϣ.�������ĺô��Ǽ�¼���ֶεĶ����DZȽ����ġ�
AWK����ǿ������ɶ�һ�еļ�¼���в�����������һ���ϲ���ʮ���ϸ�Ϊ��˵����һ�㣬���ǽ����������˵���Ե����ӣ�
��ӡ����
Ҳ����Ҫ��ӡһЩ�õ��ı��������磬һ��������������IP�����ַ���б���������������൱���ʱ��ȡ�ͱ�ú����ѣ���������LaTeX��������һ���ȽϺõĸ�ʽ��ӡ��������������б��ܼ����Ǵ�ӡȴ���鷳��
BEGIN { printf "LaTeX preample" printf "\\begin{tabular}{|c|c|...|c|}" } |
{ printf $1" & " printf $2" & " . . . printf $n" \\\\ " printf "\\hline" } |
END { print "\\end{document}" } |
��ȷ�ⲻ��һ����ͨ���⣬���Ǿ�Ҫ��ʼ�����...
(The double backslashes (\) are necessary because it's the shell escape
character)
��������ļ�
SIMBAD��һ������Ŀ�����ݿ⣬���ṩ��һ������������е�λ�á���ǰÿ�������뻭��������Щ�����ͼ�Խ����о����������������������ֲ���ѽ���������ı��ļ��1��Ϊÿһ�����崴��һ���ļ���2�������������б������������������õ�һ���ܳ��IJ�ѯ��¼��־������Ҫ���еڶ�����ʱ������awk��������־����Ȼ������Ҫ�ҵ�������ֵĹ�ͬ�㡣
|
( $1 == "====>" ) { NomObj = $2 TotObj = $4 if ( TotObj > 0 ) { FS = "|" for ( cont=0 ; cont<TotObj ; cont++ ) { getline print $2 $4 $5 $3 >> NomObj } FS = " " } } |
NOTE:��ʵ�ϣ�Ŀ�����������ͻأ����������൱���ӣ���ֻ������һ��˵�������Ӷ��ѡ� |
Playing with the mail spool
BEGIN { BEGIN_MSG = "From" BEGIN_BDY = "Precedence:" MAIN_KEY = "Subject:" VALIDATION = "[MONTH REPORT]" HEAD = "NO"; BODY = "NO"; PRINT="NO" OUT_FILE = "Month_Reports" } { if ( $1 == BEGIN_MSG ) { HEAD = "YES"; BODY = "NO"; PRINT="NO" } if ( $1 == MAIN_KEY ) { if ( $2 == VALIDATION ) { PRINT = "YES" $1 = ""; $2 = "" print "\n\n"$0"\n" > OUT_FILE } } if ( $1 == BEGIN_BDY ) { getline if ( $0 == "" ) { HEAD = "NO"; BODY = "YES" } else { HEAD = "NO"; BODY = "NO"; PRINT="NO" } } if ( BODY == "YES" && PRINT == "YES" ) { print $0 >> OUT_FILE } } |
Ҳ���������ھ�������һ���ʼ��б���������һЩ�ر����Ϣ���ύ������б���������'[MONTH
REPORT] month , dept'Ϊ����ģ���Ҳ����һ�����ĩ���Ǻ�Ȼ��Ҫ���������������Ϣ�ֱ��š� ��Ϳ�������ߵ�awk������mail spool�� ʹ��ÿһ�ݱ��汻���������ļ�����ζ����������Ĵ��롣 |
NOTE: ������Ӽ���mail spool����������ĸ�ʽ���˳�����ҵ��ʼ������á���ʵ���Ҳ���֪������ĸ�ʽ,������������ҵİ�װ��������.(����,Ҳ����һЩ��ֵ������,����������.) |
������һ������,ֻ��Ҫ������ӽ������,�����д����.
��Ҳ��awkʵ���������ܣ��������ݿ��е���Ϣ�Զ�����ҳ�棩������ƾ����֪���ģ�awk��̻��������ܶ��¡�
����ķ�������������ɡ�
һ�����⣺ |
(����취) |
������awk��Ҫһ���ܺõ��Ʊ���Ϣ��û�пո�awk�����ڶ��������Ϲ������������Լ�Ӧ��awk��������ʱ�Ⲣ����һ�����⣺ѡ��һЩ������ַ����зָ֮���ڽ����ġ���������Ѿ��������������������ͻ���һ�����鷳�������±�:1234 HD 13324 22:40:54 .... 1235 HD12223 22:43:12 .... ��awk���������������ѡ����е����⾹��һ���������ֵ����⡣Inputs
like this sometimes are mandatory. Besides, this is quite common because data input is not
homogeneous whatsoever. �������ֻ��һ�д�������������,���а취���.(�����λ֪����μ��Ĺ���һ�����Ķ���,�������!).
|
��Ȼ�ҷ�������Ҫ�����������һ��,����Awk֪����ǰ��¼���ж��ٸ���.����������ܹ��������һ��.(��ʱ��
$9 , ��ʱ�� $11 , ������ NF ).
�������������:{ printf $NF $NF = "" printf " "$0"\n" }
|
����Ϊֹ�����е����Ӷ��Ǵ��������ļ��������еġ��������ֲ�����˵�ģ�AWK�ǿ���ֻ���������еġ�ֻ��������������ʱ�Ž���ִ�С�ƥ���������Էdz�����һ����������������ɵ�������ı�����ʽ����������е��ֶΡ�
���������������һ����awkʵ�������е���Ҫ����ʽ���ƽṹ��ͬʱ���ò�������Ԥ����ĺ������������ֺ��ַ����������C�������.
AWK��ȻҲ��ͨ���ؼ���function�������û�����ĺ���������һ��ķ��ű����⣬awkҲ���Բ������顣
�������е�������һ�������ںܶೣ�õĺ�����Ҫ�ڴ����о������ƺ�ճ����������Ϊʲô�����ĸ������GNU��awk�������ڳ��������ÿ��ļ������Ⲣ���ڱ��ĵ����۷�Χ֮�ڡ�
��Ȼ��awk����һЩ����������ͬĿ�ĵĹ���һ��ǿ������������ŵ��ǿ����ں̵ܶ�ʱ����������С������������ǵ����⡣
AWK�dz��ʺ�����Ŀ�ĵ�������Ҫ��������һ��һ�еĶ������ݣ������ַ���ʽ���в�����
��/etc/passwd �������ļ��Ϳ�����awk�������и�ʽ���������������IJ���awk���ٺ��ʲ������ˡ�
��Ȼ���ⷽ�沢����ֻ��AWK��PerlҲ��һ���dz������ľ����ߣ�������ֵ��ȥ�˽�һЩAWK�ļ��ɡ�
��ֻ������һЩ�ܻ��������Ҳû�кܺõ�������������ڸ��㷺���Ķ����ҵ�����Ķ�����
ͨ�������е�unix���ж��ἰ��awk����������������ϸ�Ķ�����н��ܡ�������������������������ͷ���飬����Զ��֪��ʡôʱ������ҵ�һЩ���õĶ�����