Chinaunix首页 | 论坛 | 博客
  • 博客访问: 89706
  • 博文数量: 29
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 225
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-20 00:00
个人简介

一杯茶,品人生沉浮;平常心,遍万千世界。 农夫,山泉,有点田儿。

文章存档

2013年(1)

2010年(3)

2009年(1)

2007年(2)

2006年(22)

我的朋友

分类:

2006-10-21 14:54:54

/******************************************************
**Shell 用法点滴
**Wang Zonghui
*******************************************************/
 
1、截取日期、字符串固定长度。
例如,下列文件中第17列为日期,打印出按YYYYMMDD形式来查看该列值,并做排重处理。
[/wangzh/test] ls -l                                                                          
total 117552
-rw-r--r--   1 dsadm    dbadm      41703424 Aug 24 22:56 M05001200508011N0005.AVL
-rw-r--r--   1 dsadm    dbadm             0 Aug 24 23:01 M05002200508012N0005.AVL
-rw-r--r--   1 dsadm    dbadm      17886723 Aug 24 23:01 M05018200508012N0005.AVL
-rw-r--r--   1 dsadm    dbadm        416672 Aug 24 23:50 M05019200508252N0002.AVL

[/wangzh/test] cat M05019200508252N0002.AVL|awk -F'   ' '{print $17}'|sort -u |more           
2005081320320
2005081320332
2005081320334
2005081320342
2005081320354
2005081320370

[/wangzh/test] cat M05019200508252N0002.AVL|awk -F'   ' '{print substr($17,1,8)}'|sort -u |more
20050813
20050814
20050815
20050816

[/wangzh/test]
/***统计2005-08-15日传输的文件条数**/
[/wangzh/test] cat M05019200508252N0002.AVL|awk -F'   ' '{if(substr($17,1,8)=="20050815") total+=1} END {print "%ld\n,total}'
%ld
 430
[/wangzh/test]
 
 
2、查看文件列数
例如,下面文件共45列(分隔符为'TAB'键)
[/wangzh/test] ls -l M05019200508252N0002.AVL
-rw-r--r--   1 dsadm    dbadm        416672 Aug 24 23:50 M05019200508252N0002.AVL
[/wangzh/test] cat M05019200508252N0002.AVL|awk -F'   ' '{print NF}'|sort -u
45

[/wangzh/test]
如文件规定为45列,若其中有46列的几行记录,则可以把这些记录打印出来
[/wangzh/test] cat M05019200508252N0002.AVL|awk -F'   ' '{if(NF>45) print $0}'
[/wangzh/test]
 
 
3、统计文件中某列符合某一值的总数或某列的和。
例如,文件中第23列为"Kjava信息费",现统计该次传输的文件中信息费的总和
[/wangzh/test] ls -l M05019200508252N0002.AVL
-rw-r--r--   1 dsadm    dbadm        416672 Aug 24 23:50 M05019200508252N0002.AVL
[/wangzh/test] cat M05019200508252N0002.AVL|awk -F'   ' '{print $23}'|more
00000080
00000000
00000030
00000050
00000080
00000030
00000150
00000080

[/wangzh/test] cat M05019200508252N0002.AVL|awk -F'   ' '{total+=$23} END {printf "infofee is: %ld\n",total}'
infofee is: 92570
[/wangzh/test]
阅读(978) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~