shell程式設計三劍客之awk

2021-10-24 08:53:11 字數 2174 閱讀 7877

四 awk使用高階

awk是一種程式語言,主要用於在linux/unix下對文字和資料進行處理,是linux/unix下的乙個工具。資料可以來自標準輸入、乙個或多個檔案,或其它命令的輸出。

awk的處理文字和資料的方式:逐行掃瞄檔案,預設從第一行到最後一行,尋找匹配的特定模式的行,並在這些行上進行你想要的操作。

awk分別代表其作者姓氏的第乙個字母。因為它的作者是三個人,分別是alfred aho、brian kernighan、peter weinberger。

gawk是awk的gnu版本,它提供了bell實驗室和gnu的一些擴充套件。

下面介紹的awk是以gnu的gawk為例的,在linux系統中已把awk鏈結到gawk,所以下面全部以awk進行介紹。

1.awk用來處理檔案和資料的,是類unix下的乙個工具,也是一種程式語言

2.可以用來統計資料,比如**的訪問量,訪問的ip量等等

3.支援條件判斷,支援for和while迴圈

awk 選項 『命令部分』 檔名

注意:引用shell變數需用雙引號引起

常用選項介紹:

-f 定義字段分割符號,預設的分隔符是空格

-v 定義變數並賦值

變數變數說明

備註$0

當前處理行的整行內容

$1,$2,$3…$n

檔案中每行以間隔符號分割的不同字段

awk -f: 『』

nf當前處理行的字段個數

awk -f: 『』

$nf最後一列

$(nf-1)表示倒數第二列

fnr/nr

當前處理行的行號

fs定義間隔符

『begin;』

ofs定義輸出字段分隔符,預設空格

『begin;print $1,$3}』

rs輸入記錄分割符,預設換行

『begin;』

ors輸出記錄分割符,預設換行

『begin;』

# awk -f: '' 1.txt

# awk -f: '' 1.txt

# awk '/root/' 1.txt

# awk '/root/' 1.txt

# awk -f: '/root/' 1.txt

root /bin/bash

# awk -f: '/root/' 1.txt

root:x:0:0:root:/root:/bin/bash

# awk 'nr==1,nr==5' 1.txt

# awk 'nr==1,nr==5' 1.txt

# awk 'nr==1,nr==5;/^root/' 1.txt

root:x:0:0:root:/root:/bin/bash

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

print函式		類似echo "hello world"

# date |awk ''

# awk -f: '' /etc/passwd

printf函式 類似echo -n

# awk -f: '' /etc/passwd

# awk -f: '' /etc/passwd

# awk -f: '' /etc/passwd

awk 'begin;' a.txt

%s 字元型別 strings %-20s

%d 數值型別

佔15字元

- 表示左對齊,預設是右對齊

printf預設不會在行尾自動換行,加\n

# awk -v num=3 -f: '' /etc/passwd

# awk -v num=3 -f: '' /etc/passwd

# awk -v num=1 'begin'

1# awk -v num=1 'begin'

注意:awk中呼叫定義的變數不需要加$

熱門!!shell三劍客之「awk」

在 linux unix 系統中,awk 是乙個功能強大的編輯工具,逐行讀取輸入文字,並根據指定的匹配模式進行查詢,對符合條件的內容進行格式化輸出或者過濾處理,可以在無互動的情況下實現相當複雜的文字操作,被廣泛應用於 shell 指令碼,完成各種自動化配置任務。通常情況下 awk 所使用的命令格式如...

三劍客之awk

awk命令的執行過程 滿足 awk從檔案中讀取一行內容到記憶體中 判斷是否滿足條件 滿足 執行對應的命令 輸出到螢幕 不滿足 awk從檔案中讀取一行內容到記憶體中 判斷是否滿足條件 不滿足 繼續讀取檔案裡的內容直到檔案最後awk命令的語法awk 引數 模式 檔案 awk 引數 條件 找誰 檔案 表示...

linux 三劍客之 awk

awk是一種程式語言,用於在linux unix下對文字和資料進行處理。資料可以來自標準輸入 stdin 乙個或多個檔案,或其它命令的輸出。它支援使用者自定義函式和動態正規表示式等先進功能,是linux unix下的乙個強大程式設計工具。它在命令列中使用,但更多是作為指令碼來使用。awk有很多內建的...