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. Xcodeproject详解

    前言 在 iOS 开发过程中,我们经常会在 Xcode 里面做一些配置,比如添加系统库.第三方库,修改证书配置文件,修改编译属性等等. 在这个过程里面,一般大家仅仅只是根据经验来配置这些,并没有比较清 ...

  2. hibernate之处理视图

    近期,我去用hibernate去创建视图, 发现无法进立建立视图, 为啥? 个人去尝试去,却发现无法很好的完成, 因为hibernate的作用类似视图 后解决方案是: 1.用传统的方式去处理 2.写存 ...

  3. poj 1837

    题目链接:http://poj.org/problem?id=1837 题目大意: 有一个天平,左臂右臂各长15,然后给出n,m,n代表有几个挂钩,挂钩给出负数代表在左臂的距离,正数则在右臂m代表有m ...

  4. 在ubuntu上搭建开发环境5---联想Y470安装 ubuntu,解决双显卡发热等问题

    ubuntu14 没有解决显卡的问题的时候,会有这样的问题 1.耗电特别快.风扇狂转 2.鼠标键头显示有问题,乱闪,根本没法使用,容易卡住找不到鼠标箭头在哪里了:感觉图形界面显示也有问题,不稳定 解决 ...

  5. 第十一篇:SOUI系统资源管理

    SOUI资源管理模块 从前篇已经讲到在SOUI中所有资源文件通过一个uires.idx文件进行索引. 这里将介绍在程序中如何引用这些资源文件. 在SOUI系统中,资源文件通过一个统一的接口对象读取: ...

  6. FrameLayout

    FrameLayout是最简单的布局了. ① 所有放在布局里的控件,都按照层次堆叠在屏幕的左上角.后加进来的控件覆盖前面的控件. ② 该布局container可以用来占有屏幕的某块区域来显示单一的对象

  7. Win7下用IIS发布网站

    安装IIS控制面板->程序->程序和功能, 点击左侧的“打开或关闭Windows功能”把这几项都勾上吧,虽然有些不是必须的,多勾无碍. 进入IIS管理器控制面板-> 系统和安全-&g ...

  8. bzoj专题训练

    //http://blog.csdn.net/PoPoQQQ/article/category/2542243

  9. 标签q

    标记短的引用,默认是中文符号:双引号 <p>文字<q>段落中的引用</q>文字</p> 如果是在html里直接敲出引号,是这样的: <p>文 ...

  10. How Kafka’s Storage Internals Work

    In this post I'm going to help you understand how Kafka stores its data. I've found understanding th ...