query小测试:文件所在目录:search/odin/caih/data/out.txt 2014.12.4
目标:
1. 统计检索query总量,以及每个query的检索的评次
2. 输出每个query类别,类别里面元素的信息包含 attribute 下若干的element
统计query总量:
Query数据在中
$0为awk脚本语言的每一输入行 $1$2 $3代表的是每一输入行的列
其中 awk 在读入一行后会自动的按照空格默认分割
字段分隔字符FS(field seperator)是awk的内建变量,其默认值是空白及tab.awk每次切割字段时都会先参考FS的内容.若把":"也当成分隔字符,则awk便能自动按照“:”进行分割。
用函数 index($0,”str”)能查找到是否含有某关键词成功返回为1 no 0;
函数 split(str,a,”hhh”) str代表输入字符串,a 为分割后保存字段的数组hh表示分隔符
命令 vim out.txt 命令行调用vim编辑器打开文件 out.txt
cd /search/odin/caih/data 进入该文件夹
ls 命令表示 列出文件夹内文件信息
grep命令是一种强大的文本搜索工具,能使用正则表达式搜索文本,并把匹配的行打印出来。Grep 全称: Global Regular Expression Print.表示全局正则表达式版本。它的使用权限是所有用户。
Cat 主要功能;
1. 一次显示整个文件 cat filename
2. 从键盘创建一个文件 cat>filename
3. 讲几个文件合并为一个文件:$ cat file1 file2>file
Vim 编辑文件 一般模式下 按i 插入可以修改编辑
后ESC+ wq +Enter 保存退出
后缀
Less 减少输出内容
head 减少输出内容 只输出开头的10项(默认)
tail 减少输出的内容 只输出末尾的10项(默认)
---------------------------------------学习记录-----------------------------------------------------------------------------
统计含有 CDATA 的行
统计关键词
添加了 的判别
直接添加“
包含“”
按照 key>分割
提取 CDATA 数据
grep 'key.*CDATA.*key' out.txt|awk '{split($0,a,"key>");sum1++} {split(a[2],b,"]]");sum2++}{split(b[1],c,"CDATA");print(c[2]);sum3++}{split(c[2],d,"[");print(d[2]);sum4++} END{printsum1,sum2,sum3,sum4}'
统计每个query的检索次数:
grep 'key.*CDATA.*key' out.txt|awk '{split($0,a,"key>");sum1++} {split(a[2],b,"]]");sum2++}{split(b[1],c,"CDATA");sum3++} {split(c[2],d,"[");print(d[2]);sum4++}END{print sum1,sum2,sum3,sum4}'|sort|uniq –c
输出每个query类别,类别里元素信息:
分割出attribute 信息
分割element信息
# grep 'element name=' out.txt|awk'{split($2,a,"=");sum++} END{print sum}'
306362
整理每个query中多少个attribute 每个attribute多少个元素
判断每行的输入遇到document query,先暂时保存,遇到attribute 保存再遇到attribute直接打印。
Vim s.sh awk 函数 管道
执行s.sh cat 输出结果
统计每个query的类别,类别里元素的信息:
awk '{
3 str1 = "doc";
4 str2 = "CDATA";
5 str22= "key"
6 str3 = "attributename=";
7 str4 = "elementname";
8 str5 ="/attribute";
9 str55 =""
10
11 strout;#最后一次性输出
12
13 #print "$0:" $0 "\t\n"
14
15 if(index($0,str1)) #找到了document
16 #print "-------------------------------";
17 strout = strout"-------------------";
18 if(index($0,str2)&&index($0,str22)) #找到CDATA
19 {
20 queryNum++;
21 split($3,a,"CDATA");
22 queryName ="[" a[2];
23 split(a[2],b,"]");
24 #print "Query Name:" queryName "\t\n";
25 #print "Query" queryNum ":"a[2]"\n";
26 strout = strout "Query" queryNum ":[" a[2]"\n";
27 }
28
29 if(index($0,str3)) #找到attribute name=
30 {
31 attributeNum++;
32 split($2,a,"=");
33 #print "Attribute" attributeNum":"a[2]"\n";
34 strout = strout "Attribute" attributeNum ":"a[2]"\n";
35 }
36
37 if(index($0,str4)) #找到element name
38 {
39 split($2,a,"=");
40 elementNum++;
41 #print "element" elementNum ":"a[2]"\n" ;
42 strout = strout "element" elementNum ":" a[2]"\n";
43 }
44
45 if(index($0,str55)) #找到querydoc结尾
46 {
47 #print "-------" queryName "End------""\n";
48 strout = strout "-------"queryName"End------\n";
49 print strout;
50 strout = "";
51 }
52
53 }END{print queryNum}'
Cat 命令:
最后输出结果截图: