awk的基本原理

awk的工作原理
 
一次讀取一行文本,按輸入分隔符進行切片,切成多個組成部分,將每片直接保存在內建的變量中,$1,$2,$3….,引用指定的變量,可以顯示指定斷,或者多個斷。如果需要顯示全部的,需要使用$0來引用??梢詫蝹€片斷進行判斷,也可以對所有斷進行循環判斷。其默認分隔符為空格
 
awk的基本用法格式
awk [options] ‘program’ FILE……
 ?語句之間用分號分隔
[options]
 ? -F : 指明輸入時用到的字段分隔符
 ? -v var=VALUE : 自定義變量 
 在awk中變量的引用不需要加$,而是直接引用
awk用法的簡要介紹
第一種模式
awk [options] ‘scripts’ file1,file2…..
 
在這種模式中,scripts主要是命令的堆砌,對輸入的文本行進行處理,通過命令print,printf或是輸出重定向的方式顯示出來,這里經常用到的知識點是:awk的內置變量,以及命令print和printf的使用

第二種模式
awk [options] ‘PATTERN{action}’ file,file2…..
 
在這種模式中,最重要的是5種模式和5種action的使用,以及awk的數組的使用和內置函數
 

第一種模式
1、print
 1、各項目之間使用逗號隔開,而輸出時則以空白字符分隔
 2、輸出的Item可以為字符串或數值,當前記錄的字段(如$1)、變量或awk的表達式,數值會先轉換為字符串,而后再輸出
 3、print命令后面的Item可以省略,此時其功能相當于print $0,因此,如果想輸出空白行,則需要使用print””
 4、如果引用變量$1或其他的,是不能使用引號引起來
 
2、內置變量
  FS : input field seperator,輸入的分隔符,默認為空白字符
  OFS: output field seperator,輸出的分隔符,默認為空白字符
  RS : input record seperator,輸入的換行符
  ORS: output record seperator,輸出時的換行符
  NF : number of field ,字段個數 awk ‘{print NF}’ /etc/fstab :打印每行的最后一個字段為第幾個字段,這里是數量引用,不是對應的值引用 
awk ‘{print $NF}’ /etc/fstab : 打印每行中的最后一個字段
 

NR : number of record,文件中的行數
 awk ‘{print NR}’ /etc/fstab: 打印行號,其會個行號都顯示
 awk ‘END{print NR}’ /etc/fstab: 顯示文本的總行數,其只是在文本處理完成后,只顯示一次行號
 awk ‘{print NR}’ file1 file2 : 會每把所有文檔進行總的編號,而不是單獨對文件進行編號 

 FNR : 對每個文件進行行數單獨編號
 awk ‘{print FNR}’ file1 file2 : 會對每個文件的行數進行單獨的編號顯示
 
 FILENAME : awk命令所處理的文件的名稱 ?awk ‘{print FILENAME}’ file1 : 顯示當前文件名,但會每行顯示一次
 awk ‘END{print FILENAME}’ file1 : 顯示當前文件名,但只會顯示一次
 
 ARGC : 命令行中參數的個數,其awk命令也算一個參數 ?awk ‘END{print ARGC}’ /etc/fstab : 顯示共有幾個參數
 
 ARGV : 其是一個數組,保存的是命令行所給定的各參數
  awk ‘END{print ARGV[0]}’ /etc/fstab : 顯示第一個參數,默認第一個參數個awk命令本身
 
算術操作符
  -x : 負值
  +x : 轉換為數值
  x^y : 
 x**y : 次方
  x*y : 乘法
  x/y : 除法

格式符
  %c: 顯示字符的ASCII碼
  %d,%i : 顯示十進制整數
  %e,%E: 科學計數法數值顯示
  %f : 顯示為浮點數
  %g,%G: 以科學數法或浮點形式顯示數值
  %s: 顯示字符串
  %u: 無符號整數
  %%: 顯示%號自身,相當于轉義

原創文章,作者:sunhao,如若轉載,請注明出處:http://www.www58058.com/80026

(2)
sunhaosunhao
上一篇 2017-07-11
下一篇 2017-07-11

相關推薦

  • mysql進階之MySQL查詢

    一、MySQL多表查詢和子查詢 別名:as        表別名        字段別名        查詢結果亦可命名別名   聯結查詢:事先將兩張或多張表join,根…

    2016-11-18
  • N26-第四周博客

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 [root@localhost skel]# cp -r /etc/skel /home/tuser1[root@localhost skel]# chmod -R go=— /home/tuser1 2、編輯/etc/…

    系統運維 2017-02-08
  • 系統啟動及恢復

    一、知識整理 1、modinfo命令:顯示模塊的詳細描述信息: -n 只顯示模塊文件路徑 -p 顯示模塊參數 -a auther -d description -l license協議 modprobe命令:裝載或卸載內核 -r卸載內核,同rmmod 配置文件:/etc/modprobe.d/*.conf depmod命令:內核模塊依賴關系文件及系統信息映射…

    Linux干貨 2016-09-22
  • MySQL優化大全

     1. 優化SQL   1)通過show status了解各種sql的執行頻率         show status like 'Com_%'        了解 Com_select,Com_in…

    Linux干貨 2015-04-13
  • wk_02 作業

    Linux 文件管理命令 cp命令 功能 Linux 系統中cp命令是用來復制目錄/文件的。 概要 單源復制 cp [OPTION]… [-T] SOURCE DEST DEST不存在則事先創建此文件,并復制源文件的數據流至DEST中; DEST存在 DEST是非目錄文件:則覆蓋目標文件; DEST是目錄文件:則先…

    Linux干貨 2016-12-11
  • Haproxy+keepalivd+LAMP

    目錄 一、試驗部署 1、實驗要求 2、實驗準備 3、拓撲結構 4、網絡規劃 二、基礎設置 1、LAMP配置 2、HAProxy配置 3、Keepalived配置 三、測試 四、總結 一、試驗部署 1、實驗要求 (1) 動靜分離部署wordpress,動靜都要能實現負載均衡,要注意會話的問題; (2) 給出設計拓撲,寫成博客; (3)haproxy的設定要求:…

    2017-05-18
欧美性久久久久