Linux文字處理三劍客之AWK

2021-09-26 19:57:34 字數 2690 閱讀 1937

awk:(aho,weinberger,kernighan)報告生成器,格式化文字輸出

awk版本:new awk(nawk),gnu awk( gawk) linux使用gun awk

data]# which awk

/usr/bin/awk

[root@centos7-17 data]# ll /usr/bin/awk

lrwxrwxrwx. 1 root root 4 aug 5 17:28 /usr/bin/awk -> gawk

awk 是gawk的軟鏈結

awk讀入一行文字處理一行文字,遍歷整篇文章,預設以空白為分隔符將一行文字分成多個域,依次賦給$1,$2,$3…

awk支援標準輸入,因此支援管道

awk使用的基本格式:awk [opt] 『program』 file

# awk 的常用示例

# ①取tcp連線狀態

netstat -tan|awk '/^tcp/end'

ss -tnl | awk 'nr>1 end'

# ②取磁碟空間利用率

df | awk -f '[ %]+'

'/^\/dev\/sd/'

df | awk -f '[ %]+'

'/^\/dev\/sd/'

df | awk '/^\/dev\/sd/'

# ③計算1+2+3+...+100

awk 'beginprint "sum="sum}'

awk的分割符、域和記錄

awk的常用選項

awk的內建變數

awk中程式的語法與c語言類似

c語言中argc與agrv表示:

main函式的引數,解釋如下:

argc:命令列總的引數的個數,即ar**中元素的格式。

*ar**[ ]:字串陣列,用來存放指向你的字串引數的指標陣列,每乙個元素指向乙個引數。

ar**[0]:指向程式的全路徑名。

ar**[1]:指向在dos命令列中執行程式名後的第乙個字串。

ar**[2]:指向第二個字串。

awk支援自定義變數

pattern:根據pattern條件,過濾匹配的行,再做處理

seq 3 | awk 'i=!i'

預設 awk 'i' i未定義i=0

akw '!i' ==> !i=1

seq 10 | awk ''

常用的action分類

條件表示式(三目表示式)(三元表示式)

selector?if-true-expression:if-false-expression

其中算術表示式,比較表示式,if,while,for均採用c語言語法使用

for的特殊語法:遍歷陣列中的元素

for(var in array)

awk控制語句 ==> 組合語句

awk預設有行的迴圈,  組合語句 主要是控制行內迴圈
特殊的迴圈控制語句:

next:提前結束對本行處理而直接進入下一行處理(awk自身迴圈)

awk -f: '' /etc/passwd

awk陣列

高階用法示例:

1、取出磁碟分割槽利用率大於80%的分割槽和利用率

可再結合linux命令實現廣播

df | awk -f '[ %]+' '/^\/dev\/sd/'

2、計算1+2+3+...+100,使用time比較效能

awk:time awk 'beginprint "sum="sum}'

cmd:time (seq -s + 100000 |bc)

for:time (for((sum=0,i=1;i<=100000;i++));do let sum+=i; done; echo $sum)

3、awk去除重複行 《在awk中,變數未定義時為0>

awk '!line[$0]++' dupfilename

awk '' dupfilename 《去重原理》

4、取網路連線狀態

netstat -tan|awk '/^tcp/end'

awk函式

1)數值處理函式:

2)字串處理函式:

3)自定義函式:

awk中呼叫shell命令

例:

awk 'begin'

awk 'begin'

awk指令碼

傳遞引數需注意:在begin過程中不可用。直到首行輸入完成以後,變數才可用。

可以通過-v 引數,讓awk在執行begin之前得到變數的值。命令列中每乙個指定的

變數都需要乙個-v引數。

#!/bin/awk -f print格式:print item1, item2, …

print輸出:

與printf命令用法一樣。

printf格式化輸出:printf 「format」 ,item1,item2…

格式符:與item一一對應

修飾符

Linux文字處理三劍客

grep 作用 文字搜尋工具,根據使用者指定的 模式對目標檔案逐步進行匹配檢查,列印匹配到的行 grep root etc passwd grep命令選項 grep user etc passwd v 顯示不被pattern 匹配的行 e 僅顯示匹配到的字串 grep user etc passwd...

linux文字處理三劍客

常用引數 v 顯示不能夠被匹配到的行 i 忽略大小寫字元 o 僅顯示匹配到的字串 q 靜默模式,不輸出任何資訊 a 後 行 b 前 行 c 前後各 行 e 使用ere,相當於egrep常用引數 n 只列印模式匹配的行 e 直接在命令列模式上進行sed動作編輯,此為預設選項 f 將sed的動作寫在乙個...

文字處理三劍客

文字處理三劍客 劍客一 grep 作用 行 過濾 用法 grep 正規表示式 檔案 路徑 grep e 擴充套件類正規表示式 檔案 路徑 劍客二 sed 用法 sed 選項 位址定位sed命令 檔案 路徑 sed 選項 正規表示式 sed命令 檔案 路徑 sed 選項 位址定位 正規表示式 sed命...