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