linux shell处理流程,Linux shell脚本处理查询结果

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 数据

0818b9ca8b590ca3270a3433284dd417.png

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的检索次数:

0818b9ca8b590ca3270a3433284dd417.png

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 信息

0818b9ca8b590ca3270a3433284dd417.png

分割element信息

0818b9ca8b590ca3270a3433284dd417.png

# 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 输出结果

0818b9ca8b590ca3270a3433284dd417.png

统计每个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}'

0818b9ca8b590ca3270a3433284dd417.png

Cat 命令:

最后输出结果截图:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值