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...