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

   本文版權歸作者所有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM