awk,aho,weinberger,kernighan
gawk,gnu awk
我們在linux
上使用的
awk其實是
gawk
的鏈結檔案
gawk [options] 'program' file
program:pattern
語句之間用分號分割
ps:『』
options:
-f:指明輸入時用到的字段分隔符,預設是空白分隔符
cat/etc/fstab | tail -4 | awk ''
列印出切片第一欄位和第四字段
ps:用逗號分隔各個字段
1、內建變數
:fs,
輸入input fieldseperator ofs,
輸出rs=' '
輸入空格作為換行符
ors=' '
輸出時
nf,''
每行字段數
$nf最後一欄位
nr,''
行編號fnr,
每個檔案
argc,
命令列引數的個數
ar**
awk -v fs=':' -vofs='-' '' /etc/passwd
指定輸入
:分隔符,輸出
-分隔符
2、自定義變數:
-v var=value
,區分大小寫
awk -vtest='hello' 'begin' /etc/fstab
awk'' /etc/fstab
3、printf命令
格式化輸出,printf format,item1,item2,……
format
必須給出,不回自動換行,需要顯示給出
\n,需要分別為後面沒個
item
指定格式符
格式符:%c,ascii碼 %d,顯示十進位制整數 %e,科學計數法 %f,浮點數 %g,%g科學計數或浮點數 %s顯示字串 %u無符號 %%百分號自身 左對齊減號,右對齊加號
awk -f: '' /etc/passwd
4、算數操作符:
+,-,*,/,^,%
字串操作符號:沒有符號的操作符字串連線,賦值操作符,比較操作符,模式匹配~不匹配!~,邏輯操作符&&或||非
!,函式呼叫
function(),
條件表示式selector?if-true-expression:if-false-expression
awk -f:'' /etc/passwd
5、pattern
empty:
空模式,匹配每一行
/pattern/
僅處理匹配到的
relational
關係表示式,結果為真為假,結果為真的才被處理,一般結果為非
0值都為真
6、action
expressions
表示式
controlstatements:if,while
compoundstatements
組合語句
input statements
output statements
7、控制語句
if(條件)
if(條件) else
while(條件)
dowhile()
for(expr1;expr2....)
deletearray[index]
刪除陣列中元素
deletearray
刪除整個陣列
exit
awk -f:'",$1} else }' /etc/passwd
awk -f:'' /etc/passwd
awk'' /etc/fstab
awk -f:'/^root/;i++}}'./passwd
awk(報告生成器)詳解
awk是乙個強大的文字分析工具,相對於grep的查詢,sed的編輯,awk在其對資料分析並生成報告時,顯得尤為強大。簡單來說awk就是把檔案逐行的讀入,以空格為預設分隔符將每行切片,切開的部分再進行各種分析處理。awk a.k.a.aho,kernighan and weinberger awk的三...
Linux Shell程式設計 awk 報告生成器
awk 處理機制 awk 會逐行處理文字,支援在處理第一行之前做一些準備工作以及在處理完最後一行做一些總結性質的工作,在命令格式上分別體現如下 begin 讀入第一行文字之前執行,一般用來初始化操作 逐行處理,逐行讀入文字執行相應的處理,是最常見的編輯指令 end 處理完最後一行文字之後執行,一般用...
Shell中的awk報告生成器
一.awk 報告生成器 awk的處理機制 awk會逐行處理文字,支援在處理第一行之前做一些準備工作,以及在處理完最後一行做一些總結性質的工作,在命令格式上分別體現如下 begin 讀入第一行文字之前執行,一般用來初始化操作 逐行處理,逐行讀入文字執行相應的處理,是最常見的編輯指令 end 處理完最後...