awk 的相關知識

awk 介紹,基本用法,變量,格式化,操作符,條件判斷,循環,數組,函數等

一、awk 的介紹

1.0

1.awk是一種報告生成器,格式化文本輸出

2.awk有多種版本:New awk(nawk),GNU awk(gawk)

3.gawk:主要用于模式掃描和處理語言

二、基本用法:

1. 三種基本的用法:

awk [options] ‘program’ var=value file…..

awk [options] -f programfile var=value file……

awk [options] ‘BEGIN{action;…}pattern{action;…} END{action;…}’ file…

2.各部分代表的意思

awk 程序通常由:BEGIN語句塊、能夠使用模式匹配的通用語句塊、END語句塊,共3部分組成

program通常是由被單引號或雙引號中所用的awk的語句

選項:

-F 指明輸入時使用到的字段分隔符

1.1

-v var=value:自定義變量

3.基本格式:

awk [options] ‘program’ file…

program :pattern{action statements;..}

pattern和action:

pattern部分決定動作語句何時觸發事件BEGIN,END

action statements對數據進行處理,放在{}內指明print,printf

4.分隔符、域和記錄:

awk執行時,由分隔符分隔的字段(域)標記$1,$2..$n稱為域標識,$0為所有域。

1.2

文件的每一行稱為記錄

省略action,則默認執行print $0的操作

1.3

5.awk 的工作原理

第一步:執行BEGIN{action;… }語句塊中的語句

第二步:從文件或標準輸入(stdin)讀取一行,然后執行pattern{action;… }語句塊,它逐行掃描? ? ? ? ?? ? ? ? ?? ? ? 文件,從第一行到最后一行重復這個過程,直到文件全部被讀取完畢。

第三步:當讀至輸入流末尾時,執行END{action;…}語句塊 BEGIN語句塊在awk開始從輸入流? ? ? ? ? ? ? ? ? ? ? ?中讀取行之前被執行,這是一個可選的語句塊,比如變量初始化、打印輸出表格的表頭等語句 ? ? ? ? ? ? ? ? ? ? ? ?通 ??梢詫懺贐EGIN語句塊中

END語句塊在awk從輸入流中讀取完所有的行之后即被執行,比如打印所有行的分析結果這類信 ? ? ? ? ? ? ? ? ? ? 息匯總都是在END語句塊中完成,它也是一個可選語句塊

pattern語句塊中的通用命令是最重要的部分,也是可選的。如果沒有提供pattern語句塊,則默 ? ? ? ? ? ? ? ? ? ? ? 認執行{ print },即打印每一個讀取到的行,awk讀取的每一行都會執行該語句塊

6. print格式:print item1,item2,…

awk ‘{print “Hello, awk”}’

1.4

要點:

(1)逗號分隔符

1.7

(2)輸出的各item可以字符串,也可以是數值;當前記錄的字段、變量或awk的表達式

awk -F: ‘{print “wang”}’ /etc/passwd

1.6

(3)如省略item,相當于print $0

1.5

7. awk 變量

(1)? 內置變量:

FS:輸入字段分隔符,默認為空白字符

awk -v FS=”:” ‘{print $1,FS,$3}’ /etc/passwd

1.8

OFS:輸出字段分隔符,默認為空白字符

awk -v FS=’:’ ?-v OFS=’:’ ‘{print $1,$3,$7}’ ?/etc/passwd

1.9

RS:輸入記錄分隔符,指定輸入時的換行符

awk -v RS=’ ‘ ‘{print }’ /etc/passwd

1.10

ORS:輸出記錄分隔符,指定輸入時的換行符

awk -v RS=’ ‘ -v ORS=’###”{print }’ /etc/passwd

2.0

 

 

NF:字段數量

awk -F: ‘{print NF}’ /etc/fstab

2.1

NR:記錄號

awk ‘{print NR}’ ?/etc/fstab

2.2

FNR:各文件分別計數,記錄號

awk ‘{print FNR}’ ?/etc/fstab ?/etc/inittab

2.3

 

 

FILENAME:當前文件名

awk ‘{print FILENAME}’ /etc/fstab

2.4

(2)自定義變量(區分字符大小寫)

-v var=value? ? ? ? ? ? ? ? ?2.5

在program中直接定義

2.6

8.printf命令

格式化輸出:printf “FORMAT”,item1,item2, …

(1) 必須指定FORMAT
(2) 不會自動換行,需要顯式給出換行控制符,\n

2.8
(3) FORMAT中需要分別為后面每個item指定格式符

格式符:與item一一對應
%c: 顯示字符的ASCII碼
%d, %i: 顯示十進制整數
%e, %E:顯示科學計數法數值
%f:顯示為浮點數
%g, %G:以科學計數法或浮點形式顯示數值
%s:顯示字符串

2.7
%u:無符號整數
%%: 顯示%自身

修飾符:
#[.#]:第一個數字控制顯示的寬度;第二個#表示小數點后精度,%3.1f
-: 左對齊(默認右對齊) %-15s

+:顯示數值的正負符號 %+d
2.9

 

 

 

 

 

 

 

 

 

 

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/90762

(0)
zss123456zss123456
上一篇 2018-01-01
下一篇 2018-01-01

相關推薦

  • Linux文件壓縮、解壓、歸檔總結

    一、簡介   壓縮對我們來說通常意味著減小文件體積,節省硬盤空間。在Windows平臺上處理大文件或目錄中的文件很多時我們都需要對這些文件進行壓縮處理,壓縮格式多種多樣,如:zip、rar、7z等格式,壓縮方式也比較多樣話,支持按最大壓縮比例或者最快時間進行壓縮等多種方式,而生成的壓縮包就可以讓我們更方便的進行拷貝及歸檔整理。解壓縮顧名思義就是回歸…

    Linux干貨 2015-09-26
  • linux軟件包安裝與管理

    一、RPM包簡介     linux之所以那么強大,除了linux強大的內核,還有很大一部分取決于linux的軟件包,假想沒有軟件包,就一個內核在運行,人類需要和內核打交道是多么痛苦,但是聰明的人類發明了bash,通過bash,人就可以使用高級語言,和機器溝通,這其中的bash起始也是一個軟件包,當然linux除了ba…

    Linux干貨 2016-08-24
  • 8.3_Linux習題和作業

    課堂習題 1.當用戶xiaoming對/testdir 目錄無執行權限時,意味著無法做哪些操作? 答:不能cd進該目錄 2.當用戶xiaoqiang對/testdir 目錄無讀權限時,意味著無法做哪些操作? 答:不能查看目錄內的文件列表,不能cd,也不能查看目錄里面文件的元數據 3.當用戶wangcai 對/testdir 目錄無寫權限時,該目錄下的只讀文件…

    Linux干貨 2016-08-04
  • Linux磁盤和文件系統管理

    磁盤相關概念 設備類型: 塊設備(block):存取單位為塊,典型設備磁盤 字符設備(char):存取單位為字符,典型設備為鍵盤 設備文件: 關聯至一個設備驅動程序,進而能夠跟與之對應硬件設備進行通信。 如果存在兩個相同型號設備,使用兩個設備文件,但可能還會關聯到同一個驅動程序 設備文件只有元數據即屬性,沒有數據內容,屬于特殊文件類型 設備號碼: 主設備號:…

    Linux干貨 2016-06-09
  • 磁盤管理1——分區和文件系統的創建

    Linux磁盤及文件系統管理 Disk(硬盤)接口類型:          IDE:并口,133MB/s          SCSI:并口,640MB/s    &nbs…

    Linux干貨 2016-08-27
欧美性久久久久