shell指令碼 awk的用法

2021-10-02 20:54:10 字數 2635 閱讀 2084

語法格式:awk [選項] 『指令』 操作檔案

常用選項:-f 指定分隔符,分隔符用""引起來

-v:var=value在awk程式開始之前指定乙個值valu給變數var,這些變數值用於awk程式的begin快

-f:後面跟乙個儲存了awk程式的檔案,代替在命令列指定awk程式

awk 『』 1.txt #逐行讀取檔案1.txt內容並列印

awk 『』 1.txt #逐行讀取檔案內容,並列印該行,$0儲存的是當前行的內容

awk 『』 1.txt #逐行讀取1.txt檔案內容,每行結束後列印乙個hello,檔案1.txt有多少行就列印多少個hello

awk 『』 1.txt #列印1.txt的第一列內容,在不指定分割符的情況下,awk預設使用空白做分割符

awk -f 「:」 『』 /etc/passwd #以":"為分隔符列印/etc/passwd檔案的第一例內容

awk -f awkscript /etc/passwd #通過呼叫awk指令檔案來執行awk命令

begin用於初始化fs變數(列分隔符),列印標題,或者初始化後需要在程式中呼叫的全域性變數

end用於執行最後的運算或者列印最終的輸出結果

end塊和begin不是必須的

awk 『/123/』 1.txt #列印1.txt中匹配123的那一行內容

awk -f 「:」 『/123/』 1.txt #以":"為分隔符列印1.txt中匹配123的那一行中,第二列的內容

awk -f 「:」 『$1 ~ /root/』 /etc/passwd #列印/etc/passwd中,第一列匹配root的行其第二列的內容 ~表示匹配

awk提供了多個比較操作符:"==" 「>」 「=」 「!=」 "~"匹配 "!~"不匹配

awk 『begin $1 == 「root」 』 /etc/passwd #以":"為分隔符,列印/etc/passwd中第一列是root的行其第3列的內容

awk 『begin }』 /etc/passwd # 以":「為分隔符,列印/etc/passwd檔案中第一列匹配root的行,其第二列的內容

awk 'begin ($1 ~ 「linux」 || $2 ~ 「network」) 』 1.txt # 以":"為分隔符,列印1.txt檔案中,第一列匹配linux或者第二列匹配network的行,其第三列的內容

在awk中nf變數記錄的是當前行中有多少列(預設是空格為分割符)

awk 『/ock/』 1.txt # 統計匹配ock的行有多少列

awk 『nf == 3 』 1.txt #列印1.txt中有3列的行的內容,示例中,第二行有三列,所以列印的就是第二行的內容

$nf記錄的是當前行最後一列的內容(如果每一行有多列內容)

awk 『 }』 1.txt # 輸出1.txt中行號大於3的行,其最後一列的內容

nr記錄的是當前行的行號

awk 『 }』 1.txt #格式化輸入1.txt中行號大於3的行的行號和內容

awk 『begin /^$/ end』 1.txt #統計1.txt中有多少空行

awk 『』 3.txt #將3.txt檔案中第二列內容做平方運算後再加1輸入(字串做平方運算後結果為0)

功能:列印1.txt文字中每一列的內容

#!/bin/bash

num=`wc 1.txt | awk ''` # 統計1.txt檔案有多少列

for i in `seq 1 $num` # 根據檔案列數進行迴圈

do awk -v a=$i '' 1.txt # 列印每一列的內容,-v 引數可以指定乙個變數儲存外部變數的值,將外部變數傳遞給awk

done

shell指令碼之awk

一 什麼是awk awk其實相當於一門可以處理資料文字的語言,這麼說的原因是其具有很多類c語言的語法,如 變數,陣列,函式,流程控制等,其由aho,weinberger,kernighan大約在1977年開發完成,隨後被引入unix linux中。二 awk可以幹什麼 awk是乙個非常強大的資料處理...

shell指令碼之awk 一

2.linux中常用的awk編譯器版本有mawk,gawk。redhat使用的是gawk,ubuntu使用的是mawk.1.逐行掃瞄檔案,尋找匹配你指定模式的行,並在這些行上執行你指定的操作 2.awk 基本結構包括模式匹配 用於找到要處理的行 和處理過程 即處理動作 3.awk 有兩個特殊的模式 ...

shell與awk的指令碼運用(二)

話不多說,老闆,上硬菜 bin bash shell指令碼宣告 a ls log 將當前目錄下的log開頭的日誌檔名稱存入變數a for i in a 開始迴圈變數a do 進入迴圈 echo i 輸出檔名 b cat i awk f 定義變數b為檔案中每一行最後乙個以 為分隔符的引數和行號,輸出來...