Chinaunix首页 | 论坛 | 博客
  • 博客访问: 450248
  • 博文数量: 362
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 10
  • 用 户 组: 普通用户
  • 注册时间: 2015-07-26 17:08
文章分类

全部博文(362)

文章存档

2015年(362)

我的朋友

分类: LINUX

2015-12-11 00:43:04

    平时工作写过一些shell脚本,掌握了一些shell命令,也看过两本shell编程的书,但是对shell的熟练程度还是不够。总体而言就是练习还是不够,所以不能运用自如。我决定经常练习写一些的shell 代码,习惯用shell 命令来解决一些问题。


1  采用grep
grep 里面有个 -o 选项,这个选项我还真不知道,今天看了一篇博文,才知道有这个选项。

  1. -o, --only-matching
  2.    Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line.
就是把匹配到的模式,打印出来,每次匹配,都会换行。

  1. cat test.txt
  2. manu is good boy, manu study linux kernel
  3. manu is in nanjing
  1. grep -o manu test.txt
  2. manu
  3. manu
  4. manu

  5. grep -o manu test.txt |wc -l
  6. 3

2 awk
awk 里面有个函数叫做gsub,可以理解为global substitude, 全局替换。这个函数会返回找到的个数:

  1. root@manu:~/code/shell # awk  '{s+=gsub(/manu/,"manuscola"); print }END{print s}'  test.txt
    manuscola is good boy, manuscola study linux kernel
    manuscola is in nanjing
    3
我将test.txt文件里面的manu 统统换成manuscola,同时统计出现的个数。
这样的话,我们就得到了第二个方法:



  1. awk '{s+=gsub(/字符串/,"")}END{print s}' file

    当然这个题目有很多其他的办法。掌握更多的命令的用法,做大量的练习,最终达到运用自如的程度

参考文献:
The AWK Manual

2   man grep

阅读(763) | 评论(0) | 转发(0) |
0

上一篇:awk中FS的一点细节

下一篇:vim格式化C代码

给主人留下些什么吧!~~