awk 入門 awk入門,強大的文字分析工具

2021-10-08 04:31:54 字數 2689 閱讀 3857

awk 入門

awk是用於unix和類unix系統的強大文字解析工具,但是由於它具有可用於執行常見解析任務的程式設計功能,因此它也被視為一種程式語言。 您可能不會使用awk開發下乙個gui應用程式,並且它可能不會代替您的預設指令碼語言,但是它對於特定任務而言是強大的實用程式。

這些任務可能是令人驚訝的多樣化。 發現awk可以最好地解決您的哪些問題的最好方法是學習awk。 您會驚訝於awk如何幫助您完成更多工作,卻花費更少的精力。

awk的基本語法為:

awk

[ options ]

'pattern '

file

首先,請建立此示例檔案並將其另存為colours.txt

name       color  amount

banana     yellow 6

strawberry red    3

grape      purple 10

plum       purple 2

kiwi       brown  4

potato     brown  9

此資料被乙個或多個空格分隔為列。 以某種方式組織要分析的資料是很常見的。 它不一定總是由空格分隔的列,甚至不是逗號或分號,但尤其是在日誌檔案或資料轉儲中,通常存在可**的模式。 您可以使用資料模式來幫助awk提取和處理您要關注的資料。

$ 

awk'' colours.txt

color

redyellow

redpurple

green

purple

brown

brown

yellow

在這種情況下,awk顯示第二列,用$ 2表示。 這是相對直觀的,因此您可能會猜出print $ 1顯示第一列,而print $ 3顯示第三列,依此類推。

要顯示所有列,請使用$ 0

美元符號($)後的數字是乙個表示式 ,因此$ 2$(1 + 1)表示同一件事。

您使用的示例檔案非常結構化。 它有一行充當標題,而各列直接相互關聯。 通過定義條件需求,您可以限定希望awk在檢視此資料時返回的內容。 例如,要檢視第2列中與「黃色」匹配的專案並列印第1列的內容:

awk

'$2=="yellow"' colours.txt

banana

正規表示式也可以。 該條件查詢條件為$ 2,以便與字母p大致匹配,後跟任意數量的(乙個或多個)字元,然後依次跟著字母p

$ 

awk'$2 ~ /p.+p/ ' colours.txt

grape   purple  

10plum    purple  

2

數字自然由awk解釋。 例如,要列印第三列包含大於5的整數的任何行:

awk

'$3>5 ' colours.txt

name    color

banana  yellow

grape   purple

potato  brown

預設情況下,awk使用空格作為字段分隔符。 但是,並非所有文字檔案都使用空格來定義字段。 例如,使用以下內容建立乙個名為colours.csv的檔案:

name,color,amount

banana,yellow,6

strawberry,red,3

grape,purple,10

plum,purple,2

kiwi,brown,4

potato,brown,9

只要您指定應將哪個字元用作命令中的字段分隔符,awk即可以完全相同的方式處理資料。 使用--field-separator(或簡稱為-f)選項來定義定界符:

$ 

awk-f","

'$2=="yellow" ' file1.csv

banana

使用輸出重定向,您可以將結果寫入檔案。 例如:

$ 

awk -f, '$3>5 colours.csv > output.txt

這將建立乙個包含awk查詢內容的檔案。

每個查詢 ,方法是在awk語句中包括重定向:

$ 

awk'' colours.txt

這將生成名為yellow.txtred.txt等的檔案。

本文改編自社群技術播客hacker public radio 。

翻譯自:

awk 入門

awk備忘,強大的awk

越來越發現awk的強大,做了實驗,做了總結 備忘!在linux shell中呼叫awk awk x x即為awk命令,命令必須包含在單引號中,至少雙引號都不行 方法一 awk f nr 7,nr 15 方法二 awk nr 7,nr 15 設定awk分隔符 nf 顯示域的個數 不是分隔符數,一般應該...

AWK快速入門

建立乙個檔名為emp.data的檔案,用vim編輯如下內容 beth 4.00 0 dan 3.75 0 kathy 4.00 10 mark 5.00 20 mary 5.50 22 susie 4.25 18 每列分別為名字,時薪,工時。如果想列印每個雇員的名字和他們的薪酬 awk 3 0 em...

Awk 入門筆記

在專案中需要寫shell從日誌檔案中獲取訪問記錄,用到了awk資料處理工具。特做一下中結。awk處理每行資料的時候預設是採用空格或者tab隔開的,將每行資料拆分為每一列。每一列都有預設的標示,1 2 其中0標 示一整行 還有幾 個比較常 用到的內 置變數如 下,在使 用的時候 不需要使 用 符號。n...