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 20:28
下一篇 2018-01-01 21:08

相關推薦

  • apache自動化腳本搭建虛擬主機

    1 基于主機名實現三個虛擬主機 (1).創建網站目錄與測試文件 (2).創建虛擬主機文件(目錄為/etc/httpd/conf.d/下)   (3).修改測試apache主機hosts文件(就不用DNS服務器解析,方便測試),測試httpd配置文件是否有問題,重啟httpd服務   (4)修改測試主機hosts文件(就不用DNS服務器解析…

    Linux干貨 2016-10-09
  • 8.1作業習題

    1,創建testuser uid 1234,主組:bin,輔助組:root,ftp,shell:/bin/csh home:/testdir/testuser useradd -u 1234 -g bin -G root,ftp -s /bin/csh -d /testdir/testuser testuser 2.修改testuser uid:4321,主…

    Linux干貨 2016-08-04
  • 魔術方法 反射

    魔術方法 反射 反射(reflection):指的是運行時獲取類型定義信息。一個對象能夠在運行時像照鏡子一樣反射出其類型信息;也就是說能夠通過一個對象,找到自己的type、class、attribute、或method的能力,稱為反射或者自省。 具有反射能力的函數:type、isinstance、callable、dir、getattr。 運行時和編譯時不同…

    Linux干貨 2017-11-30
  • 馬哥linux運維網絡班第22期-第一周博客作業

    計算機的組成及其功能 計算機由運算器,控制器,存儲器,輸入裝置和輸出裝置組成 (1)運算器 對數據進行常規運算(+,-,*,/)和邏輯運算(與,或,非等)及比較位移等操作 (2)控制器 分析從存儲器中讀出的指令并按預先規定的步奏執行操作 (3)存儲器 存儲程序和數據信息并實現快速存取 (4)輸入設備 把各種類型的信息轉換為二進制編碼輸入進計算機存儲起來 (5…

    Linux干貨 2016-08-14
  • 馬哥教育網絡班22期第一周課程練習1-3天

    1.描述計算機組成及其功能 CPU:  運算器  控制器  寄存器  緩存 存儲器:  RAM(隨機訪問存儲器)  I/O設備:               i:下指令,提供數據 如:鍵鼠     &…

    Linux干貨 2016-08-15
  • 淺談篩選日志中的IP地址信息

    作為運維人員,經常會需要會對日志中的某些重要信息進行篩選,比如說ip等參數。 案例一:篩選出IP地址信息 日志信息如下: [root@C67-X64-A1 hanghang]# cat test.txt  Jul 13 08:13:09 localhost sshd[14678]…

    系統運維 2016-07-22
欧美性久久久久