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. css设置网页文本选中样式

    网页的默认的文本选中颜色是蓝底白字(大多应该是吧),这个样子: 感觉并不是特别好看,可以通过CSS3的一个特性,一个CSS3的伪类选择器::selection来设置文本被选中时的状态,比如本博客的主题 ...

  2. NYOJ题目101两点距离

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAsEAAAIBCAIAAAAnO/WXAAAgAElEQVR4nO3dq3IbSeM34L0Jc/O9BW

  3. NYOJ之字符串逆序输出

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAswAAAJaCAIAAAC0jIYTAAAgAElEQVR4nO3du27rSpbGcb+Ecz2IU+ ...

  4. Extjs ComboBox 动态选中第一项

    有时候我们希望通过Store加载过来的数据,ComboBoxItem能够选择第一条数据作为默认数据,我们可以这么操作: var storeinfo = Ext.create('Ext.data.Sto ...

  5. android 入门-动画与容器

    set 动画容器 可作为资源id添加R.anim.xxxx   可用于在样式表中添加  http://blog.csdn.net/liuhe688/article/details/6660823 in ...

  6. SQL常见错误及处理方法

    1.情况:数据库引擎安装失败,报类似权限不足的错误 解决:可能由于计算机名和用户名相同导致,更改计算机名,卸载干净重装即可

  7. NS 802.11函数分析(一)

    recv函数有两个作用,不仅是接收其他节点发送的包,而且当节点接收到其他包的时候也会调用recv() 首先给出NS2中recv的源码,和一些注释: void Mac802_11::recv(Packe ...

  8. android之HttpURLConnection(转)

    android之HttpURLConnection 1.HttpURLConnection连接URL1)创建一个URL对象 URL url = new URL(http://www.baidu.com ...

  9. OpenCv实现两幅图像的拼接

    直接贴上源码 来源:http://www.myexception.cn/image/1498389.html 实验效果 Left.jpg right.jpg ImageMatch.jpg #inclu ...

  10. OpenCv for Android

    Android开发:安装NDK,移植OpenCV2.3.1,JNI调用OpenCV全过程http://blog.csdn.net/yanzi1225627/article/details/852572 ...