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 20:43
下一篇 2017-07-11 20:51

相關推薦

  • MHA

    1.關于MHA MHA是一款開源的mysql的高可用程序,它為mysql主從復制架構提供了automating master failover功能。MHA在監控到master節點故障時,會提升其中擁有最新數據的slave節點成為新的master節點,在此期間,MHA會通過與其他從節點獲取額外的信息來避免不一致性的問題。MHA還提供了master節點的在線切換…

    2016-11-26
  • 生產環境模擬實現keepalived+Nginx調度器+httpd的高可用集群

    具體過程是用Nginx做負載均衡,可以將Nginx和主機放在同一臺機子上,也可以分開放置,只不過分開的話要指明RS是Nginx的主機地址。至于直接將虛擬地址配置在Nginx主機上我暫時還未成功 下面附上我的雙主模型的主keepalived服務器的配置 ! Configuration File for keepalive…

    Linux干貨 2016-11-11
  • bash腳本與程序包管理

    概述:本章主要介紹bash編程中的函數和數組以及字符串處理和程序包管理工具等,來幫助小伙伴們更進一步的了解bash編程的內容和軟件的安裝、更新、卸載、查詢等操作。 一、函數介紹 函數function是由若干條shell命令組成的語句塊,實現代碼重用和模塊化編程。 它與shell程序形式上是相似的,不同的是它不是一個單獨的進程,不能獨立運行,而是shell程序…

    Linux干貨 2016-08-24
  • 編譯安裝nginx并實現反向代理負載均衡和緩存功能

    一、編譯安裝nginx 1、下載 [root@ns1 ~]# wget http://nginx.org/download/nginx-1.10.0.tar.gz 2、解壓 [root@ns1 ~]# tar xf nginx-1.10.0.tar.gz [root@ns1 ~]…

    Linux干貨 2016-05-25
  • NFS 實現wordpress同步

    NFS 0x00 NFS概述 0x01 NFS實現原理 0x02 NFS 相關配置及命令 0x03 NFS實踐作業(一) 實驗要求: 實驗環境: 實驗步驟: 0x04 NFS實踐作業(二) 實驗要求: 實驗環境: 實驗步驟: 0x05 常見問題 0x00 NFS概述 網絡文件系統(英語:Network File System,縮寫為NFS)是一種分布式文件系…

    2017-04-30
  • Hadoop偽分布式模型

    # java -version # vim /etc/profile.d/java.sh export JAVA_HOME=/usr # yum install java-1.8.0-openjdk-devel # mkdir /bdapps # tar xf hadoop-2.7.4.tar.gz -C /bdapps/ # cd /bdapps # ln…

    2017-12-08
欧美性久久久久