awkÊǸöÓÅÐãÎı¾´¦Àí¹¤¾ß£¬¿ÉÒÔ˵ÊÇÒ»ÃųÌÐòÉè¼ÆÓïÑÔ¡£ÏÂÃæÊÇawkÄÚÖñäÁ¿¡£
Ò»¡¢ÄÚÖñäÁ¿±í
2¡¢ÊµÀý
1¡¢³£ÓòÙ×÷
[chengmo@localhost ~]$ awk '/^root/{print $0}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
/^root/ ΪѡÔñ±í´ïʽ£¬$0´ú±íÊÇÖðÐÐ
2¡¢ÉèÖÃ×ֶηָô·ûºÅ(FSʹÓ÷½·¨£©
[chengmo@localhost ~]$ awk 'BEGIN{FS=":"}/^root/{print $1,$NF}' /etc/passwd
root /bin/bash
FSΪ×ֶηָô·û£¬¿ÉÒÔ×Ô¼ºÉèÖã¬Ä¬ÈÏÊǿոñ£¬ÒòΪpasswdÀïÃæÊÇ¡±:¡±·Ö¸ô£¬ËùÒÔÐèÒªÐÞ¸ÄĬÈÏ·Ö¸ô·û¡£NFÊÇ×Ö¶Î×ÜÊý£¬$0´ú±íµ±Ç°ÐмǼ£¬$1-$nÊǵ±Ç°ÐУ¬¸÷¸ö×ֶζÔÓ¦Öµ¡£
3¡¢¼Ç¼ÌõÊý(NR,FNRʹÓ÷½·¨)
[chengmo@localhost ~]$ awk 'BEGIN{FS=":"}{print NR,$1,$NF}' /etc/passwd
1 root /bin/bash
2 bin /sbin/nologin
3 daemon /sbin/nologin
4 adm /sbin/nologin
5 lp /sbin/nologin
6 sync /bin/sync
7 shutdown /sbin/shutdown
¡¡
NRµÃµ½µ±Ç°¼Ç¼ËùÔÚÐÐ
4¡¢ÉèÖÃÊä³ö×ֶηָô·û£¨OFSʹÓ÷½·¨)
[chengmo@localhost ~]$ awk 'BEGIN{FS=":";OFS="^^"}/^root/{print FNR,$1,$NF}' /etc/passwd
1^^root^^/bin/bash
OFSÉèÖÃĬÈÏ×ֶηָô·û
5¡¢ÉèÖÃÊä³öÐмǼ·Ö¸ô·û(ORSʹÓ÷½·¨£©
[chengmo@localhost ~]$ awk 'BEGIN{FS=":";ORS="^^"}{print FNR,$1,$NF}' /etc/passwd
1 root /bin/bash^^2 bin /sbin/nologin^^3 daemon /sbin/nologin^^4 adm /sbin/nologin^^5 lp /sbin/nologin
´ÓÉÏÃæ¿´£¬ORSĬÈÏÊÇ»»Ðзû£¬ÕâÀïÐÞ¸ÄΪ£º¡±^^¡±£¬ËùÓÐÐÐÖ®¼äÓá±^^¡±·Ö¸ôÁË¡£
6¡¢ÊäÈë²ÎÊý»ñÈ¡(ARGC ,ARGVʹÓã©
[chengmo@localhost ~]$ awk 'BEGIN{FS=":";print "ARGC="ARGC;for(k in ARGV) {print k"="ARGV[k]; }}' /etc/passwd
ARGC=2
0=awk
1=/etc/passwd
ARGCµÃµ½ËùÓÐÊäÈë²ÎÊý¸öÊý£¬ARGV»ñµÃÊäÈë²ÎÊýÄÚÈÝ£¬ÊÇÒ»¸öÊý×é¡£
7¡¢»ñµÃ´«ÈëµÄÎļþÃû(FILENAMEʹÓÃ)
[chengmo@localhost ~]$ awk 'BEGIN{FS=":";print FILENAME}{print FILENAME}' /etc/passwd
/etc/passwd
FILENAME,$0-$N,NF ²»ÄÜʹÓÃÔÚBEGINÖУ¬BEGINÖв»ÄÜ»ñµÃÈκÎÓëÎļþ¼Ç¼²Ù×÷µÄ±äÁ¿¡£
8¡¢»ñµÃlinux»·¾³±äÁ¿£¨ENVIRONʹÓã©
[chengmo@localhost ~]$ awk 'BEGIN{print ENVIRON["PATH"];}' /etc/passwd
/usr/lib/qt-3.3/bin:/usr/kerberos/bin:/usr/lib/ccache:/usr/lib/icecc/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/java/jdk1.5.0_17/bin:/usr/java/jdk1.5.0_17/jre/bin:/usr/local/mysql/bin:/home/web97/bin
ENVIRONÊÇ×ÓµäÐÍÊý×飬¿ÉÒÔͨ¹ý¶ÔÓ¦¼üÖµ»ñµÃËüµÄÖµ¡£
9¡¢Êä³öÊý¾Ý¸ñʽÉèÖãº(OFMTʹÓã©
[chengmo@localhost ~]$ awk 'BEGIN{OFMT="%.3f";print 2/3,123.11111111;}' /etc/passwd
0.667 123.111
OFMTĬÈÏÊä³ö¸ñʽÊÇ£º%.6g ±£ÁôÁùλСÊý£¬ÕâÀïÐÞ¸ÄOFMT»áÐÞ¸ÄĬÈÏÊý¾ÝÊä³ö¸ñʽ¡£
10¡¢°´¿í¶ÈÖ¸¶¨·Ö¸ô·û£¨FIELDWIDTHSʹÓã©
[chengmo@localhost ~]$ echo 20100117054932 | awk 'BEGIN{FIELDWIDTHS="4 2 2 2 2 3"}{print $1"-"$2"-"$3,$4":"$5":"$6}'
2010-01-17 05:49:32
FIELDWIDTHSÆä¸ñʽΪ¿Õ¸ñ·Ö¸ôµÄÒ»´®Êý×Ö£¬ÓÃÒԶԼǼ½øÐÐÓòµÄ·Ö¸ô£¬FIELDWIDTHS="4 2 2 2 2 2"¾Í±íʾ$1¿í¶ÈÊÇ4£¬$2ÊÇ2£¬$3ÊÇ2 .... ¡£Õâ¸öʱºò»áºöÂÔ£ºFS·Ö¸ô·û¡£
11¡¢RSTART RLENGTHʹÓÃ
[chengmo@localhost ~]$ awk 'BEGIN{start=match("this is a test",/[a-z]+$/); print start, RSTART, RLENGTH }'
11 11 4
[chengmo@localhost ~]$ awk 'BEGIN{start=match("this is a test",/^[a-z]+$/); print start, RSTART, RLENGTH }'
0 0 ¨C1
RSTART ±»Æ¥ÅäÕýÔò±í´ïʽÊ×λÖã¬RLENGTH Æ¥Åä×Ö·û³¤¶È£¬Ã»ÓÐÕÒµ½Îª-1.
ÒÔÉÏÊÇ£ºawkµÄһЩÄÚÖñäÁ¿Ê¹Óã¬Ï£ÍûÓÐʲôÎÊÌâ¿ÉÒÔÓëÎÒ½»Á÷¡£