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&n
相关新闻>>
- 发表评论
-
- 最新评论 更多>>