Chinaunix首页 | 论坛 | 博客
  • 博客访问: 21742
  • 博文数量: 5
  • 博客积分: 133
  • 博客等级: 入伍新兵
  • 技术积分: 60
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-07 15:26
文章分类

全部博文(5)

文章存档

2011年(5)

我的朋友

分类: LINUX

2011-06-07 23:51:26

下午在QQ群里大家讨论了一下awk的用法,发现自己还是不太熟,其实这东西挺简单的,只是平时用的少,所以温习一下:

原本的数据文件是demo.txt

1 x a=1&b=2&c=3
2 y b=1&c=3
3 z c=2&a=1


需要整理成下面的形式(也就是说值要按照abc的顺序排列,没有的缺省显示“-”):

1 x 1 2 3
2 y - 1 3
3 z 1 - 2


对应的awk脚本demo.awk(拷贝代码的话注意去掉行号):

01 #!/bin/awk -f
02
03 BEGIN {
04     ORS = "";
05     OFS = "\t";
06 }
07
08 NF == 3 {
09     param["a"] = "-";
10     param["b"] = "-";
11     param["c"] = "-";
12
13     print $1, $2, "";
14
15     split($3, query, "&");
16     for (key in query) {
17         split(query[key], item, "=");
18         if (item[1] in param) {
19             param[item[1]] = item[2];
20         }
21     }
22
23     print param["a"], param["b"], param["c"], "\n";
24 }


执行下面语句就能看到效果了:

chmod +x ./demo.awk
./demo.awk demo.txt

有一个有趣的/bin/pgawk,调试时可以用来替换/bin/awk,会生成一个awkprof.out文件,对分析性能有帮助
阅读(1526) | 评论(0) | 转发(0) |
0

上一篇:awk脚本 使用awk去掉重复的单词

下一篇:没有了

给主人留下些什么吧!~~