Linux三劍客之awk命令快速入門

2021-09-23 02:01:38 字數 1956 閱讀 2791

一、簡介

1.1 awk是什麼?

awk不僅僅時linux系統中的乙個命令,而且是一種程式語言,可以用來處理資料和生成報告(excel)。處理的資料可以是乙個或多個檔案,可以是來自標準輸入,也可以通過管道獲取標準輸入,awk可以在命令列上直接編輯命令進行操作,也可以編寫成awk程式來進行更為複雜的運用

1.2 awk的格式

awk[options] 'pattern' file  // 比如: awk -f "[/]+"  '' test.txt  

options : 是引數,可選,比如 -f 指定分割符

pattern : 是模式,比如nr>=2 ,此引數可選

action: 是動作, 執行什麼.比如例子中的  // $2表示第二列

1.3 初步例子

例子1: awk -f ":" 'nr>=2 && nr<=6' /etc/passwd (全)

解釋: 把passwd檔案,用:分割列,取行號》=2 <=6,並且列印分割的第一列。

例子2: awk -f ":" 'nr>=2&&nr<=6' /etc/passwd (沒有動作)

解釋: 把passwd檔案,用:分割列,取行號》=2 <=6 ,因為沒有動作,預設列印整行

例子3: awk -f ":" '' /etc/passwd (沒有條件)

解釋: 把passwd檔案,用:分割列,沒有條件,所以是所有行,列印的是行號 和第乙個分割列

例子4: awk 'begin' count.txt | sort | uniq -c | sort -n -k 1

解釋: 把乙個空格組成的單詞組進行統計

1.4 內部變數

$0 當前行全部內容,$n 第n列內容 , nr ,當前行,nf 當前最大列號,$nf 最後列內容,rs 行分割,fs 列分割

1.5 其他例子

1、完整例子

echo -e "a line\n b line" | awk -f " " 'beginend'

#解釋 : -f 指定分割符 "" (預設) , begin塊列印start 執行塊{}列印第一列 end塊列印多少行多少列

2、內部使用變數 (**塊類""用來連線字串)

echo | awk ''

echo | awk ''

#第乙個案例列印 v1 v2 v3

#第二個案例列印 v1=v2=v3

3、列印倒數第一列,採用$nf (nf值在當前行是最後一列,$n 指定第n列)

echo -n "line1 f1 f2\n line2 f1 f2" | awk ''

二、高階參照下面這3個博文:

//部落格一:擷取nginx access.log的統計

awk '' access.log | sort -n | uniq -c |sort -nr -k 1|head -10   //統計nginx access.log 最高的10個ip次數

awk '' access.log | sort | uniq -c |sort -nr -k 1|head -10  //統計nginx access.log 最高的10個url次數

awk '' access.log | sed  -r 's#(.*)\?(.*)#\1#g' | sort -n | uniq -c | sort -nr -k  1 | head //統計url替換掉?引數

//解釋:

command 1 | command 2 #他的功能是把第乙個命令command 1執行的結果作為command 2的輸入傳給command 2

wc -l  //統計行

uniq -c  //去重,並且把每行前加次數

uniq -u  //去重

sort -nr //

-n:依照數值的大小排序

-r:以相反的順序來排序

-k:按照哪一列進行排序

linux 三劍客之 awk

awk是一種程式語言,用於在linux unix下對文字和資料進行處理。資料可以來自標準輸入 stdin 乙個或多個檔案,或其它命令的輸出。它支援使用者自定義函式和動態正規表示式等先進功能,是linux unix下的乙個強大程式設計工具。它在命令列中使用,但更多是作為指令碼來使用。awk有很多內建的...

linux三劍客之awk

linux三劍客 grep sed awk 與sed類似,awk是行處理器 相比較螢幕處理的優點,在處理龐大檔案時不會出現記憶體溢位或是處理緩慢的問題,它可以對每一行進行切片處理 awk處理過程 依次對每一行進行處理,然後輸出 awk命令形式 awk f f v begin end file f f...

三劍客之awk

awk命令的執行過程 滿足 awk從檔案中讀取一行內容到記憶體中 判斷是否滿足條件 滿足 執行對應的命令 輸出到螢幕 不滿足 awk從檔案中讀取一行內容到記憶體中 判斷是否滿足條件 不滿足 繼續讀取檔案裡的內容直到檔案最後awk命令的語法awk 引數 模式 檔案 awk 引數 條件 找誰 檔案 表示...