對於每一行,如果第三列大於0,則列印第一列,第二列*第三列的值
awk `$3>0 ` file1 file2
-f指定執行程式的檔案
awk -f programfile inputfile
列印整行輸入
awk `` 或者 awk ``
nr當前行數,nf當前行的列數,下面這個 是列印當前行的列數,第一列和最後一列
awk ``
格式化輸出,跟c語言格式化類似
awk `printf("%-8s %.2f", $1,$2*$3)`
排序awk `$3>0 ` file1 file2 | sort
計算後再選擇
awk `$3 * $2>50 ` file1 file2
awk `$1=="suite" ` file1 file2
awk `!($nf>5 || $nf < 2)" ` file1 file2
begin 和 end begin在處理輸入前先執行begin語句塊
awk `begin`
統計第三列大於50的總數,在處理完輸入之後最後輸入第三列大於50的總數
awk `$3>50 end`
字串拼接
awk ` end `
內建函式length
awk ``
if-else
awk `$2>10 end`
while語句
awk `i=1 while(i<$3)`
forawk ``
arrays
逆序列印
awk ` end }`
字段分隔符
awk `beginend`
正則匹配
$2包含字串asia
awk `$2 ~ /asia/ print $3`
$2沒有包含字串asia
awk `$2 !~ /asia/ print $3`
內建變數
fnr 需要讀入的行數 filename 讀入的檔名
賦值到字段中
awk `begin $2=="aaa" $2=="ccc" `
內建數學函式
atan2(y,x) cos(x) exp(x) int(x) log(x) rand(x) sin(x) sqrt(x) srand(x)
string內建函式
gsub(r,s) gsub(r,s,t) index(s,t) length(s) match(s,r) split(s,a) split(s,a,fs) sprinf() sub(r,s) substr(s,p)
do statement while(expr)
break continue
next exit
delete函式
for(i in pop)
delete pop[i]
多維陣列
pop[i,j]
if((i,j) in arr) ...
AWK的基本使用
由於一直在做it實施工作,所以工作中接觸到unix後台的東西多些.從剛開始只會使用cd pwd等簡單的命令,到後來順手就能寫個幾十行的shell指令碼,在這個過程中經歷了很多,也學習到了很多.awk是我個人認為使用最多,最高效的命令.本篇就先回憶下awk的基礎.awk雖然功能強大,但是其語法卻一點也...
awk的基本使用
常用的分割 testphone 檔案中儲存了 18768193916,18768187118,13777495441,17764562286,15068118584,13186967520,13750893161,18758322331,18767180646,13588023315 cat tes...
awk學習示例
sed和 awk一直是文字分析的神器,最近學習了陳皓的兩篇博文,小試牛刀如下。1.背景 有些map reduce 資料產出之後,對於 value 數量不足的記錄,要求在資料端予以補全。在這裡,我們要求每條記錄中有10個 value 用逗號,進行分隔。對於補全之後的結果,是不是可以保證每條記錄中有10...