1. awk用例

今天用awk来统计一个字符出现的次数,总是比实际多一个。查了半天才发现问题所在。

文本tt.txt如下:

<lst name="responseHeader"><int name="status">0</int><int name="QTime">14</int></lst><str name="defaultCoreName">collection1</str><lst name="initFailures"/><lst name="status"><lst name="PassRecord2014"><str name="name">PassRecord2014</str><bool name="isDefaultCore">false</bool><str name="instanceDir">/home/solr-4.5.0/example/solr/PassRecord2014/</str><str name="dataDir">/home/solr-4.5.0/example/solr/PassRecord2014/data/</str><str name="config">solrconfig.xml</str><str name="schema">schema.xml</str><date name="startTime">2015-04-01T06:28:15.07Z</date><long name="uptime">1239572</long><lst name="index"><int name="numDocs">164090656</int><int name="maxDoc">208295993</int><int name="deletedDocs">44205337</int><long name="version">261232</long><int name="segmentCount">34</int><bool name="current">true</bool><bool name="hasDeletions">true</bool><str name="directory">org.apache.lucene.store.NRTCachingDirectory:NRTCachingDirectory(org.apache.lucene.store.MMapDirectory@/home/solr-4.5.0/example/solr/PassRecord2014/data/index.20150203122351874 lockFactory=org.apache.lucene.store.NativeFSLockFactory@73cb4cae; maxCacheMB=48.0 maxMergeSizeMB=4.0)</str><lst name="userData"><str name="commitTimeMSec">1421846399426</str></lst><date name="lastModified">2015-01-21T13:19:59.426Z</date><long name="sizeInBytes">42172898452</long><str name="size">39.28 GB</str></lst></lst><lst name="PassRecord2014_00"><str name="name">PassRecord2014_00</str><bool name="isDefaultCore">false</bool><str name="instanceDir">/home/solr-4.5.0/example/solr/PassRecord2014_00/</str><str name="dataDir">/home/solr-4.5.0/example/solr/PassRecord2014_00/data/</str><str name="config">solrconfig.xml</str><str name="schema">schema.xml</str><date name="startTime">2015-04-01T06:28:16.268Z</date><long name="uptime">1238381</long><lst name="index"><int name="numDocs">175829855</int><int name="maxDoc">194278346</int><int name="deletedDocs">18448491</int><long name="version">149815</long><int name="segmentCount">33</int><bool name="current">true</bool><bool name="hasDeletions">true</bool><str name="directory">org.apache.lucene.store.NRTCachingDirectory:NRTCachingDirectory(org.apache.lucene.store.MMapDirectory@/home/solr-4.5.0/example/solr/PassRecord2014_00/data/index lockFactory=org.apache.lucene.store.NativeFSLockFactory@36656758; maxCacheMB=48.0 maxMergeSizeMB=4.0)</str><lst name="userData"><str name="commitTimeMSec">1421898315939</str></lst><date name="lastModified">2015-01-22T03:45:15.939Z</date><long name="sizeInBytes">38838948011</long><str name="size">36.17 GB</str></lst></lst><lst name="PassRecord2014_01"><str name="name">PassRecord2014_01</str><bool name="isDefaultCore">false</bool><str name="instanceDir">/home/solr-4.5.0/example/solr/PassRecord2014_01/</str><str name="dataDir">/home/solr-4.5.0/example/solr/PassRecord2014_01/data/</str><str name="config">solrconfig.xml</str><str name="schema">schema.xml</str><date name="startTime">2015-04-01T06:28:15.07Z</date><long name="uptime">1239586</long><lst name="index"><int name="numDocs">134166331</int><int name="maxDoc">134166331</int><int name="deletedDocs">0</int><long name="version">96590</long><int name="segmentCount">1</int><bool name="current">true</bool><bool name="hasDeletions">false</bool><str name="directory">org.apache.lucene.store.NRTCachingDirectory:NRTCachingDirectory(org.apache.lucene.store.MMapDirectory@/home/solr-4.5.0/example/solr/PassRecord2014_01/data/index lockFactory=org.apache.lucene.store.NativeFSLockFactory@1f98a654; maxCacheMB=48.0 maxMergeSizeMB=4.0)</str><lst name="userData"><str name="commitTimeMSec">1421809078062</str></lst><date name="lastModified">2015-01-21T02:57:58.062Z</date><long name="sizeInBytes">26719674923</long><str name="size">24.88 GB</str></lst></lst><lst name="collection1"><str name="name">collection1</str><bool name="isDefaultCore">true</bool><str name="instanceDir">/home/solr-4.5.0/example/solr/collection1/</str><str name="dataDir">/home/solr-4.5.0/example/solr/collection1/data/</str><str name="config">solrconfig.xml</str><str name="schema">schema.xml</str><date name="startTime">2015-04-01T06:28:15.07Z</date><long name="uptime">1239586</long><lst name="index"><int name="numDocs">0</int><int name="maxDoc">0</int><int name="deletedDocs">0</int><long name="version">1</long><int name="segmentCount">0</int><bool name="current">true</bool><bool name="hasDeletions">false</bool><str name="directory">org.apache.lucene.store.NRTCachingDirectory:NRTCachingDirectory(org.apache.lucene.store.MMapDirectory@/home/solr-4.5.0/example/solr/collection1/data/index lockFactory=org.apache.lucene.store.NativeFSLockFactory@4e850e8c; maxCacheMB=48.0 maxMergeSizeMB=4.0)</str><lst name="userData"/><long name="sizeInBytes">65</long><str name="size">65 bytes</str></lst></lst></lst>

需要查找其中numDocs出现的此处,为此下了一条执行语句,发现怎么结果都多1.

如下:

cat t.txt |awk  'BEGIN{c=0;} { for(i=0;i<NF;i++) if($i~/numDocs/)c++;} END{print c;}'

后来将每一个匹配到的域,才发现$0不应该去做匹配的。。。。。

2. 正则中需要转义的字符

特别字符

说明

$

匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 ‘\n' 或‘\r'。要匹配 $ 字符本身,请使用 \$。

( )

标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 \( 和 \)。

*

匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*。

+

匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+。

.

匹配除换行符 \n之外的任何单字符。要匹配 .,请使用 \。

[ ]

标记一个中括号表达式的开始。要匹配 [,请使用 \[。

?

匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 \?。

\

将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, ‘n' 匹配字符‘n'。'\n' 匹配换行符。序列 ‘\\' 匹配 “\”,而 ‘\(' 则匹配 “(”。

^

匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配 ^ 字符本身,请使用 \^。

{ }

标记限定符表达式的开始。要匹配 {,请使用 \{。

|

指明两项之间的一个选择。要匹配 |,请使用 \|。

3. 匹配操作符(~)

用来在记录或者域内匹配正则表达式。如$ awk '$1 ~/^root/' test将显示test文件第一列中以root开头的行。

4. 内置变量

ARGC               命令行参数个数
ARGV 命令行参数排列
ENVIRON 支持队列中系统环境变量的使用
FILENAME awk浏览的文件名
FNR 浏览文件的记录数
FS 设置输入域分隔符,等价于命令行 -F选项
NF 浏览记录的域的个数
NR 已读的记录数
OFS 输出域分隔符
ORS 输出记录分隔符
RS 控制记录分隔符

5. 域分隔符

-F指定域分隔符为':',如:awk -F ‘:’

awk 学习的更多相关文章

  1. awk二十问-【AWK学习之旅】

    ---===AWK学习之旅===--- 一行命令: 1.打印输入每行的字段总数: 最后一行的字段总数:END{print NF} 每行都显示字段总数: {print NF}   2.打印指定行: aw ...

  2. awk十三问-【AWK学习之旅】

    ---===AWK学习之旅===--- 十三个常用命令行处理   [root@monitor awkdir]# cat emp.txt Beth 4.00 0 Dan 3.75 0 Kathy 4.0 ...

  3. awk分割列-【AWK学习之旅】

    ---===AWK学习之旅===--- awk 内置分割函数:split,将列按照指定分割符,分割成数组 用法:split(str1,array,"分隔符") 文件内容: [roo ...

  4. linux awk学习笔记

    awk学习笔记 awk语法格式 awk '{pattern + action}' {filenames} awk作用 awk的最基本功能是在文件或者字符串中基于指定规则浏览和抽取信息,awk抽取信息后 ...

  5. (转) awk学习

     awk学习  原文:http://blog.chinaunix.net/uid-23302288-id-3785105.html http://www.zsythink.net/archives/t ...

  6. 【转】awk学习笔记

    Awk学习笔记 整理:Jims of 肥肥世家 <jims.yang@gmail.com> Copyright © 2004 本文遵从GPL协议,欢迎转载.修改.散布. 第一次发布时间:2 ...

  7. awk 学习笔记

    awk的语法有两种形式 awk [options] 'script' var=value file(s) awk [options] -f scriptfile var=value file(s) 选 ...

  8. AWK学习总结(三) Records and Fields

    AWK 记录和域 The NR Variable % awk '{print NR, $0}' employees 1 Tom Jones 4424 5/12/66 543354 2 Mary Ada ...

  9. (转载)(收藏)Awk学习详细文档

    awk命令 本文索引 [隐藏] awk命令格式和选项 awk模式和操作 模式 操作 awk脚本基本结构 awk的工作原理 awk内置变量(预定义变量) 将外部变量值传递给awk awk运算与判断 算术 ...

随机推荐

  1. 20145206邹京儒《Java程序设计》第一周学习总结

    20145206 <Java程序设计>第1周学习总结 教材学习内容总结 1.三大平台:Java SE.Java EE与Java ME.Java SE是各应用平台的基础,分为四个主要的部分: ...

  2. 与你相遇好幸运,Tippecanoe在Centos下の安装

    全新的CentOS 7 x86_64 安装编译工具 yum install -y gcc automake autoconf libtool make yum insyall -y gcc gcc-c ...

  3. Memcached驱动(C#)

    using Memcached.ClientLibrary; using System; using System.Collections.Generic; using System.IO; usin ...

  4. Delphi函数指针

    参考:http://blog.chinaunix.net/uid-91034-id-2009700.html http://blog.csdn.net/procedure1984/article/de ...

  5. python中如何用dis模块来查看py的汇编代码?

    之前测试不成功,用导入dis的方式. 但如何在命令行里加入 -m dis,就会OK啦. python -m dis test.py #coding: utf8 x = [1, 2, 3] for i ...

  6. Metrics介绍

    Metrics可以为你的代码的运行提供无与伦比的洞察力.作为一款监控指标的度量类库,它提供了很多模块可以为第三方库或者应用提供辅助统计信息, 比如Jetty, Logback, Log4j, Apac ...

  7. cordova

    cordova 1.安装 nodejs => node -v2.安装 npm install -g cordova => cordova -v3.安装 jdk 环境变量:(系统变量) 新建 ...

  8. Codeforces Round #229 (Div. 2) C. Inna and Candy Boxes 树状数组s

    C. Inna and Candy Boxes   Inna loves sweets very much. She has n closed present boxes lines up in a ...

  9. 程序员必懂:javaweb三大框架知识点总结

    原文链接:http://www.cnblogs.com/SXTkaifa/p/5968631.html javaweb三大框架知识点总结 一.Struts2的总结 1.Struts 2的工作流程,从请 ...

  10. autoprefixer

    自动化补全工具,在写兼容的css样式的时候,自动补全-webkit,-moz等 sublime和websotrm上都可以安装此工具.