awk学习实战
	1、实例1
	怎样的shell才能使file1、file2两个文件的$2不同的话,取出全局$0?
	注意:比较两个文件的$2的时候,一定要第一列相同的情况下才比较
	1.1、操作文件
	# cat file1
	00001       20
	00002       31
	00003       04
	00004       56
	00005       94
	00006       73
	00007       25
	00008       86
	00009       19
	00010       52
	 
	# cat file2
	00001       20
	00007       28
	00002       32
	00004       56
	00010       52
	 
	 1.2 实现命令
	# paste file1 file2|awk '{if(($1=$3)&&($2!=$4)) {print $0}}'
	00007 31 00007 28
	00002 04 00002 32
	00010 94 00010 52
	其它:
	 #cat file1 file2|sort |uniq –u
	 
	三楼的答案是错的,我要的结果是
	00002 31  32
	00007 25  28
	sort file1 >f1;sort file2 >f2; join -j1 1 f1 f2|awk '$2 != $3'
	or
	sort file1 >f1;sort file2 >f2; join -1 1 -2 1 f1 f2|awk '$2 != $3'
	 
	 
	2、实例2
	#cat fawk.a
	1       xiao                  25      beijing        9000
	2       liuwenjing             24      beijing        5000
	3       weijianjun             29      shanghai      8000
	4       wanmingyang          28      beijing        5000
	5       tianzhiyu              25      beijing        5500
	6       zhouhaoxing           23      beijing        5000
	 
	2.1 显示$2等xiao或$2等于liu的全行
	[root@store_2 awk]# awk '{ if(($2=="xiao")||($2=="liu")) print $0 }' fawk.a
	 1       xiao                  25      beijing        9000
	 
	2.3 显示$2等xiao或$2包含liu的行
	[root@store_2 awk]# awk '{ if(($2=="xiao")||($2~/liu/)) print $0 }' fawk.a
	 1       xiao                  25      beijing        9000
	 2       liuwenjing             24      beijing        5000
	 
	2.3 计算共显示了多少行NR
	[root@store_2 awk]# awk '{ print $0 } END { print "总行数:" NR }' fawk.a
	 1       xiao                  25      beijing        9000
	 2       liuwenjing            24      beijing         5000
	 3       weijianjun            29      shanghai       8000
	 4       wanmingyang           28      beijing       5000
	 5       tianzhiyu             25      beijing         5500
	 6       zhouhaoxing           23      beijing        5000
	总行数:6
	2.4 显示当前路径的最后一个目录名
	echo $PWD | awk -F/ '{ print $NF}'
	echo $PWD | awk -F/ '{ print NF}' # 显示列或域数目
	echo $PWD | awk -F/ '{ print NF-1}' # 计算
	2.4  替换函数
	# hehe替换xiao
	[root@store_2 awk]# awk 'gsub(/xiao/,"hehe")' fawk.a   //$0 中,xiao替换liu
	 1       hehe                  25      beijing        9000
	同:sed 's/xiao/hehe/' fawk.a ,但显示所有记录
	2.5 长度函数
	[root@store_2 awk]# awk '{ print length($4) }' fawk.a
	7
	7
	…..
	2.6 分割函数
	split(s,a,t) //t为分隔标准,s为字符,a为数组,a[1],a[2]....
	 
	2.7 计算当然目录下所有文件大小
	2.7.1  单命令
	[root@store_2 awk]#  ll|awk '{total+=$5} { print $0} END { print total }' #可以加多个{}
	总计 16
	-rw-r--r-- 1 root root 354 10-29 01:55 fawk.a
	-rwxr-xr-x 1 root root  61 10-29 04:34 it.awk
	415
	 
	2.7.2  编程
	[root@store_2 awk]# cat it.awk
	#!/bin/awk -f
	(total+=$5)
	END {print "总大小:" total }
	[root@store_2 awk]# ll|./it.awk
	-rw-r--r-- 1 root root 354 10-29 01:55 fawk.a
	-rwxr-xr-x 1 root root  61 10-29 04:34 it.awk
	总大小:415
	 
	3 实例3
	  3.1 删除所有空白行
	将一个文件里所有的空白行删除
	代码::
	$ awk 'NF>0' test1.dat
	one 123-321 234/22 a
	two 344-637 726/28 c
	three 273-287 287/97 d
	four 872-872 282/20 c
	  3.2 输出一个文件的偶数行
	代码::
	$ awk 'NR %2 ==0' test1.dat
	two 344-637 726/28 c
	four 872-872 282/20 c
	  3.3 输入范围是1到100的七个随机数
	代码::
	$ awk 'BEGIN{for (i=1;i<7;i++) print int(101*rand())}'
	24
	29
	85
	15
	59
	19
	
	  3.5 输出本目录下所有文件的字节数
	代码::
	]$ ls -l |awk '{x+=$5}; END{print x}'
	15827
	  3.6 显示UID>500的用户记录
	   [root@store_2 awk]# awk -F: '$3>500 { print $0}' /etc/passwd
	nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
	    也可以这样写:
	  [root@store_2 awk]# awk -F: '{ if($3>500)  print $0 }' /etc/passwd
	nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
	[root@store_2 awk]# awk -F: '{ if($3>500)  {print $0} }' /etc/passwd
	nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
	 
	   以下为错误写法:
	  a、 [root@store_2 awk]# awk -F: '{ $3>500  print $0 }' /etc/passwd
	awk: { $3>500  print $0 }
	awk:           ^ syntax error
	  b、 awk -F: '{$3>500}  {print $0}' /etc/passwd
	       root:x:0:0:root:/root:/bin/bash
	bin:x:1:1:bin:/bin:/sbin/nologin
	daemon:x:2:2:daemon:/sbin:/sbin/nologin
	       。。。。。。。。。
	作者“风云的博客”

 
 
