顯示行的所有內容 $0
awk '' /etc/passwd
顯示hello world (前面的金額echo 控制了 輸出1行 與內容無關)echo asdf |awk ''
顯示多行hello world (檔案內有幾行 就顯示幾行hello world 檔案控制了輸出的行數)awk '' /etc/passwd
使用分隔符awk 'begin' /etc/passwd
使用分隔符(功能一樣)awk -f":" '' /etc/passwd
使用製表符和字串awk -f":" '' /etc/passwd
通常,對於每個輸入行,awk 都會執行每個指令碼**塊一次。然而,在許多程式設計情況中,
可能需要在 awk 開始處理輸入檔案中的文字之前執行初始化**。對於這種情況,awk 允許
您定義乙個 begin 塊。我們在前乙個示例中使用了 begin 塊。因為 awk 在開始處理輸入文
件之前會執行 begin 塊,因此它是初始化 fs(字段分隔符)變數、列印頁首或初始化其它
在程式中以後會引用的全域性變數的極佳位置。
awk 還提供了另乙個特殊塊,叫作 end 塊。awk 在處理了輸入檔案中的所有行之後執行
這個塊。通常,end 塊用於執行最終計算或列印應該出現在輸出流結尾的摘要資訊。
awk 'begin' #10
邏輯運算子awk 'begin}'
算數運算子說明,所有用作算術運算子 進行操作,運算元自動轉為數值,所有非數值都變為 0
awk 'begin' #0 2
awk 'begin' #12
三目運算子awk 'begin' #a is b
變數名
屬性$0
當前記錄(當前行)
$1-$n
字段序號(分隔符做出的分隔是乙個字段)
fs輸入欄位的分隔符 一般在begin塊裡 ,也可以使用 awk -f"" 指定分隔符
rs輸入記錄的分隔符 ,預設是回車
nf當前記錄的字段個數 就是有多少列
nr已經讀出的記錄數目 也就是行號 從1開始
fnr針對兩個檔案,顯示兩個檔案時,將2個檔案的行號分開
ofs輸出字段分隔符 預設是 空格
ors輸出記錄的分隔符, 預設是 換行符
-v引用awk內部變數 例如在''外部指定 ofs
查詢oldboy執行的程式並結束
ps -ef|awk '$1=="oldboy"'|xargs kill -9
指定分隔符fsawk 'begin' /etc/passwd #指定分隔符為 : ,然後讀取列
awk 'begin' /etc/passwd #分隔符為乙個或多個 空格
記錄數量nrifconfig eth0|awk 'nr==2' #ip位址
字段數量nfawk 'begin' /etc/passwd #檢視乙個欄位有幾列 (之前用fs 制定了字段分隔符)
awk -f ":" 'nf==8' /etc/passwd #當乙個欄位有8列的時候輸出整行
記錄分隔符rsawk 'begin' /etc/passwd #把所有:替換成回車
指定字段分隔符ofsawk 'begin ' /etc/passwd
#輸出 root#x#0
bin#x#1
daemon#x#2
adm#x#3
lp#x#4
sync#x#5
shutdown#x#6
指定記錄分隔符orsawk 'begin' /etc/passwd #把預設的回車替換成了製表符
外部引用內部變數awk -f -vofs=":" 『』 /etc/passwd
awk '/reg/' filename #reg是正規表示式 可以將$0中 滿足條件的記錄送到:action中處理
在記錄中搜尋乙個字段awk '/root/' /etc/passwd #搜尋*root* 在記錄中
輸出第5條記錄中包含root的字段awk -f: '$5~/root/' /etc/passwd
布林表示式awk 'bool' filename // bool?action:pass
awk 'begin$1=="root"' /etc/passwd #如果 第乙個欄位是 root 則輸出
比較表示式awk '$3>30' /etc/passwd
復合用法awk -f: '$1=="root"||$4==0' /etc/passwd
awk -f: '}' /etc/passwd
awk 提供的非常類似c語言的if語句
使用awk檢測每個型別的使用者有幾個
使用awk 批量刪除 使用者
建立不同日期的檔案
awk的while迴圈結構 等同於 c語言的 while 迴圈 . awk 還設有 do while 結構
while 迴圈
while #想要執行**就先要滿足while條件
do while #無論滿不滿足 , 第一次的 do 都是可以執行的
continue #跳過此次迴圈 執行下次迴圈
break #跳出所有迴圈 直接結束迴圈
例子
for 迴圈
for 迴圈需要三個引數
for(初始化條件[執行一次];判斷條件[執行迴圈的次數];判斷成功後執行的語句[執行迴圈的次數])
執行順序: 1,2,3,{},2,3,{},2,3,{},2,3,{}....[直到不滿足條件2,跳出迴圈 執行{}下面的**]
例子
(一共迴圈0~99 ,100次迴圈)
awk中的陣列都是關聯陣列,數字索引也會轉變為字串索引
#exit
}
for..in 輸出,因為數字是關聯屬組,預設是無序的,所以通過 下標取得有序屬組 awk 例項練習(一)
前一篇學習了awk的基本知識,現在來做一些練習加深一下印象。假設我們有這樣乙個待處理的檔案 grade.txt m.tansley 05 99 48311 green 8 40 44 j.lulu 06 99 48317 green 9 24 26 p.bunny 02 99 48 yellow 1...
awk 例項練習(一)
前一篇學習了awk的基本知識,現在來做一些練習加深一下印象。假設我們有這樣乙個待處理的檔案 grade.txt m.tansley 05 99 48311 green 8 40 44 j.lulu 06 99 48317 green 9 24 26 p.bunny 02 99 48 yellow 1...
awk 例項練習(一)
前一篇學習了awk的基本知識,現在來做一些練習加深一下印象。假設我們有這樣乙個待處理的檔案 grade.txt m.tansley 05 99 48311 green 8 40 44 j.lulu 06 99 48317 green 9 24 26 p.bunny 02 99 48 yellow 1...