awk基礎篇 Shell 文字處理利器

2021-08-27 23:51:05 字數 2864 閱讀 4673

sed傾向於以行為單位進行處理,而awk更擅長將一行分為幾段進行處理。

awk用法

| awk '條件型別1 條件型別2 ...' 

awk '條件型別1 條件型別2 ...' filename

awk支援兩種資料**,既可以通過管道獲取資料,也可以從檔案獲取資料。

awk主要是處理每一行的字段內的資料,而預設的字段分割符為空格或tab。分割後的每乙個欄位都有乙個變數名來指代。第乙個是$1,第二個是$2,以此類推。$0指代當前這一整行。

awk格式化輸出

[nigel@/vbird_linux]$ last -n 5

nigel pts/32

10.41.52.111

wedsep

12 09:

24 still logged in

tris pts/26

10.41.69.55

tuesep

1122

:51 still logged in

tris pts/24

10.41.69.55

tuesep

1122

:46 still logged in

tris pts/21

10.41.69.55

tuesep

1122

:41 still logged in

tris pts/20

10.41.69.55

tuesep

1122

:41 still logged in

[nigel@/vbird_linux]$ last -n 5 | awk ''

nigel 10.41.52.111

tris 10.41.69.55

tris 10.41.69.55

tris 10.41.69.55

tris 10.41.69.55

awk是以行為一次處理的單位,而以字段為最小的處理單位。

awk內建了一些特殊變數,用來儲存特殊資訊:

awk條件輸出

[nigel@ /vbird_linux]$ head -n 5 /etc/passwd

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

[nigel@ /vbird_linux]$ head -n 5 /etc/passwd | awk ' $3<10'

root:x:0

:0:root

:/root

:/bin/bash

bin 1

daemon 2

adm 3

lp 4

第一行沒有處理,是因為此時分割符還是預設的空格,從第二行開始才是」:」

解決方法是使用begin關鍵字:

[nigel@ /vbird_linux]$ head -n 5 /etc/passwd | awk 'begin  $3<10'

root 0

bin 1

daemon 2

adm 3

lp 4

需要特別注意,自定的風格符從第二行開始才會生效,所以通常我們需要加上begin來讓其從第一行就開始生效。

awk也可以進行一些簡單的計算

[nigel@devtj-todo-

1507091995

name

1st

2nd 3th

vbird

23000

24000

25000

dmtsai

21000

22000

23000

bird2

43000

42000

41000

[nigel@/vbird_linux]$ cat pay.txt | awk 'nr==

1 nr>=2'

name

1st

2nd

3th total

vbird

23000

24000

25000

72000.00

dmtsai

21000

22000

23000

66000.00

bird2

43000

42000

41000

126000.00

在使用過程中需要注意以下幾點:

所有awk動作,如果需要多個命令輔助時,可利用分號「;」間隔,或者直接以enter換行。

格式化輸出時,要加上\n,才能進行分行

awk還有很多高階特性,如if、迴圈等。暫時先不接觸,把基礎用熟練了再說。

文字處理awk

awk是乙個強大的文字分析工具,相對於grep的查詢,sed的編輯,awk在其對資料分析並生成報告時,顯得尤為強大。簡單來說awk就是把檔案逐行的讀入,以空格為預設分隔符將每行切片,切開的部分再進行各種分析處理。實際上awk確實有自己的程式語言 樣式掃瞄和處理語言。awk 1.命令列方式 awk f...

awk文字處理

awk是一種程式語言,用於在linux環境中對文字資料進行處理 二 awk的兩種語法格式 awk options conmmand filenames awk options f awk script file filenames f 定義輸入字段分隔符,預設分隔符是空格或製表符 命令begin e...

awk文字處理

awk文字處理 基於模式匹配檢查輸入文字,逐行處理並輸出 通常用在shell指令碼中,獲取指定的資料 單獨用時,可對文字資料做統計 一 語法格式 格式1 命令 awk 選項 條件 格式2 awk 選項 條件 檔案.若有多條語句,可用分號分隔 print是最常用的指令 awk f etc passwd...