下午在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) |