awk/gawk
1,內建變數
filename:輸入檔名稱
fnr:當前資料檔案中的資料行數
nf:資料檔案中的字段總數
nr:已處理的輸入資料行數目
fs:輸入資料段分隔符
rs:輸入資料行分隔符
ofs:輸出資料段分隔符(使用這個來控制和printf格式化可以試試,哪個更方便些)
ors:輸出資料行分隔符
$0一行資料,$1——$n各個欄位的資料。
1)可以根據模式進行匹配,進一步的可以將匹配限定於特定欄位中~
cat a.txt | awk '/2/'
cat a.txt | awk '$1~3 '
甚至還可以對數學表示式和文字進行匹配:
cat a.txt | awk '$1==0'
cat a.txt | awk '$1=="0" '
2)加入條件判斷(上面的模式匹配某種程度上也類似於條件判斷)
if語句:
cat a.txt | awk 'else}'
另外,多條語句要麼分成多行來寫,要麼最好加上分號。
cat a.txt | awk 'awk中的if語句分開書寫> else
>
> }'
迴圈語句:
while語句:
cat a.txt | awk 'begin } end'
for語句:
cat a.txt | awk 'begin } end'
感覺while迴圈是控制整體的迴圈次數,但是for則是對每一行都進行一次迴圈。即使不加迴圈控制條件,中間{}語句也對各行進行計算
函式相關
awk有一些內建的函式,比如mktime時間函式,split等等,甚至還可以內建函式,這部分高階特性等後面用到的時候深入研究下吧
2,相關案例
示例文字
123示例文字a.txt45
cat a.txt | awk '計算各行數值的和begin end
'
awk常用命令
awk命令詳解 2009年03月31日 星期二 22 22 awk指令詳解 1.命令簡述 awk將每個輸入行識別成一條記錄,而將那一行上的每個單詞域識別成乙個字段 2.命令選項 f 指定分隔符 nf 單行最後乙個分段 nr 行數 等同 and 語句兩邊必須同時匹配為真 等同 or 語句兩邊同時或其中...
awk常用命令
1 列印檔案的第一列 域 awk filename 2 列印檔案的前兩列 域 awk filename 3 列印完第一列,然後列印第二列 awk filename 5 列印文字第一行 awk nr 1 filename 6 列印文字第二行第一列 sed n 2,1p filename awk pri...
awk常用命令
awk 用法 awk pattern 變數名 含義 argc 命令列變元個數 argv 命令列變元陣列 filename 當前輸入檔名 fnr 當前檔案中的記錄號 fs 輸入域分隔符,預設為乙個空格 rs 輸入記錄分隔符 nf 當前記錄裡域個數 nr 到目前為止記錄數 ofs 輸出域分隔符 ors ...