(一) 什麼是awk
awk其實相當於一門可以處理資料文字的語言,這麼說的原因是其具有很多類c語言的語法,如:變數,陣列,函式,流程控制等,其由aho,weinberger,kernighan大約在2023年開發完成,隨後被引入unix/linux中。
(二) awk可以幹什麼
awk是乙個非常強大的資料處理工具,可對文字進行的編輯,篩選,其非常適用於處理有行和列組成的文字資料,就像處理資料庫中的記錄一樣,可以刪除列,新增列或者刪除行,修改行與新增行等一系列操作,非常實用。
(三)awk的基本語法
一般形式:awk pattern filename
(四) 執行awk程式的幾種方式
(1)通過命令執行awk程式
例如:
awk 『』 filename 輸出filenam全部的資料
awk 『/^t/ 』 filename 輸出行首為t的文字行
(2)通過awk指令碼
例如:
把awk 『/^t/ 』 filename 中的』/^t/ 『寫入test文字檔案中,然後執行**awk -f test filename 就達到和上述一樣的效果了。
(3)通過可執行程式
#! /usr/bin/awk -f
'/^t/ '
賦予該指令碼可執行許可權後,執行:./test.awk filename 就ok.
(五) awk的模式匹配,即pattern中可以使用的形式
(1)關係表示式,既可以使用》 ,< ,== ,!=等關係表示式作為匹配模式,進行篩選。
例如:
awk 『$2>80 』 filename 顯示第二列大於80的行。
(2)正規表示式,既可以使用[$,.,^,* ,]等正規表示式作為匹配模式,進行篩選。
例如:
#! /usr/bin/bash
result=`awk '/^t/ ' filename `
result=`awk '/^(tom|key)/ ' filename `
echo $result
(3)混合模式,即既可以使用關係表示式又可以使用正規表示式進行混合。
例如:
#! /bin/bash
result=`awk '/^t/ && $2 > 80 ' filename `
echo
$result
(4)區間模式,通過條件匹配一段連續的問本行。
例如:
#! /bin/bash
#匹配/^tom/與$2=90行之間的行
result=`awk '/^tom/,$2=90 ' filename `
echo
$result
(5)begin模式
該模式是一種特殊的你內建模式,執行於awk程式還沒有讀取文字行之前,該模式僅僅被執行一次,當awk讀取資料以後begin不再成立。
例如:
#! /usr/bin/awk -f
#輸出字串
begin
又如:
#! /usr/bin/awk -f
#可以在開始執行awk前定義變數並進行一系列的初始化工作
begin
(6)end模式
該模式是一種特殊的你內建模式,執行於awk程式讀取文字行並處理完以後,即將推出程式是執行,相當於做善後操作,該模式所對應的操作只執行一次。
例如:
#! /usr/bin/awk -f
#程式退出時顯示提示資訊
end
(六) awk提供的系統函式
(七) awk的流程控制
(1)判斷
if(exp)
else
(2)迴圈for(i=0; i或
while( exp )
或
do
while( exp );
(3)控制
例如:
#! /usr/bin/awk -f
##當讀取的行為空行時,跳過後面的語句
/^[\t]*$/
(八) awk的格式化輸出
(1)print
(2)priint(「format」,num);
(3)sprintf(「format」,num):sprintf()函式的功能與prntf()函式大致相同,但是該函式只是以字串的形式返回格式化結果,並不輸出到標準裝置。可以使用該函式的返回結果使用print,printf()輸出到標準裝置上。
#! /usr/bin/awk -f
begin
end
(九) awk與shell的互動使用
(1)通過管道實現與shell的交換
例如:
#! /usr/bin/awk -f
begin
printf("there are %d online users",n)
}
上述例子中,通過管道來執行who命令,將執行結果傳遞給getline函式,該函式依次讀取每一行資料
(2)通過system函式實現與shell的互動
例如:
#! /usr/bin/awk -f
begin
}
上述例子中,使用system函式執行ls命令,由於system 不支援函式的傳遞,所以必須將結果重定向到filename檔案中,然後用getline函式重新讀取出來。 shell指令碼之awk 一
2.linux中常用的awk編譯器版本有mawk,gawk。redhat使用的是gawk,ubuntu使用的是mawk.1.逐行掃瞄檔案,尋找匹配你指定模式的行,並在這些行上執行你指定的操作 2.awk 基本結構包括模式匹配 用於找到要處理的行 和處理過程 即處理動作 3.awk 有兩個特殊的模式 ...
shell指令碼 awk的用法
語法格式 awk 選項 指令 操作檔案 常用選項 f 指定分隔符,分隔符用 引起來 v var value在awk程式開始之前指定乙個值valu給變數var,這些變數值用於awk程式的begin快 f 後面跟乙個儲存了awk程式的檔案,代替在命令列指定awk程式 awk 1.txt 逐行讀取檔案1....
shell指令碼以及awk學習
awk filenameawk end filename if e root temp then echo yes else echo no fisort n filenamegrep r 123 root temptemp txt mktemp tempx.cat dev urandom stri...