awk处理之案例六:awk根据条件插入文本

编译环境

   本系列文章所提供的算法均在以下环境下编译通过。

【脚本编译环境】Federa 8,linux 2.6.35.6-45.fc14.i686
【处理器】 Intel(R) Core(TM)2 Quad CPU Q9400 @ 2.66GHz
【内存】 2025272 kB

前言

    awk是脚本中出色的文本处理工具。源码好像也是用C语言写的。本系列会针对不同的案例,用awk来解决我们所要的问题。 为什么会用awk呢?我们当然可以使用C语言或者java语言来对文本 做处理,但每次都要编译会令人发疯的。修改起来也麻烦,正所谓杀鸡焉用牛刀。 而脚本的灵活便捷使得工作变得更加轻松容易。在shell脚本编程中,awk堪称瑞士军刀绝不为过。

    本系列文章均系笔者所写,难免有一些错误或者纰漏,如果小伙伴们有好的建议或者更好的算法,请不吝赐教。

正文

【场景】

   现在有一个文本a.txt如下:

1

2

333

44

222

44

   提取完之后,c.txt文本内容如下:

1

555

2

333

555

44

222

44

【代码】

BEGIN {

   FS="[ ]+"

}

{

      a[NR]=$0

}

/44/{

      a[NR-2] = "555\n"a[NR-2]

}

END {

   for(i=1; i<=NR;i++)

   {

      print a[i]

   }

}

【解释】

   在awk中,pattern要和 {在同一行。就像BEGIN和END在同一行。

   awk中遍历行的时候,是不能修改文本,所以要把文本保存在数组当中

作者

   出处:http://www.cnblogs.com/gina

   本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

你可能感兴趣的:(awk)