三劍客之awk

三劍客(awk,sed,grep)

awk是一個報告生成器,它擁有強大的文本格式化的能力。

awk的基本語法是awk [options] 'Pattern{Action}' file

 

從一個最簡單的命令作爲start,省略[options]Pattern,將Action設置成最簡單的print

$ echo abc > test.txt
$ awk '{print}' test.txt
abc

例題:

 

解析

awk是一行一行地處理文本文件,運行流程是:

  1. 先運行BEGIN後的{Action},相當於表頭
  2. 再運行{Action}中的文件處理主體命令
  3. 最後運行END後的{Action}中的命令

有幾個經常用到的awk常量:NF是當前行的field字段數;NR是正在處理的當前行數。

注意到是轉置,假如原始文本有mn列(字段),那麼轉置後的文本應該有nm列,即原始文本的每個字段都對應新文本的一行。我們可以用數組res來儲存新文本,將新文本的每一行存爲數組res的一個元素。

END之前我們遍歷file.txt的每一行,並做一個判斷:在第一行時,每碰到一個字段就將其按順序放在res數組中;從第二行開始起,每碰到一個字段就將其追加到對應元素的末尾(中間添加一個空格)。

文本處理完了,最後需要輸出。在END後遍歷數組,輸出每一行。注意printf不會自動換行,而print會自動換行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章