首頁>技術>

讓我們開始使用它。-- Seth Kenlon(作者)

awk 是用於 Unix 和類 Unix 系統的強大文字解析工具,但是由於它有可程式設計函式,因此你可以用它來執行常規解析任務,因此它也被視為一種程式語言。你可能不會使用 awk 開發下一個 GUI 應用,並且它可能不會代替你的預設指令碼語言,但是它是用於特定任務的強大程式。

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

awk 的基本語法是:

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

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

列印列

在 awk 中,print 函式顯示你指定的內容。你可以使用許多預定義的變數,但是最常見的是文字檔案中以整數命名的列。試試看:

在這裡,awk 顯示第二列,用 $2 表示。這是相對直觀的,因此你可能會猜測 print $1 顯示第一列,而 print $3 顯示第三列,依此類推。

要顯示全部列,請使用 $0。

美元符號($)後的數字是表示式,因此 $2 和 $(1+1) 是同一意思。

有條件地選擇列

你使用的示例檔案非常結構化。它有一行充當標題,並且各列直接相互關聯。通過定義條件,你可以限定 awk 在找到此資料時返回的內容。例如,要檢視第二列中與 yellow 匹配的項並列印第一列的內容:

正則表示式也可以工作。此表示式近似匹配 $2 中以 p 開頭跟上任意數量(一個或多個)字元後繼續跟上 p 的值:

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

欄位分隔符

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

只要你指定將哪個字元用作命令中的欄位分隔符,awk 就能以完全相同的方式處理資料。使用 --field-separator(或簡稱為 -F)選項來定義分隔符:

儲存輸出

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

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

你還可以將檔案拆分為按列資料分組的多個檔案。例如,如果要根據每行顯示的顏色將 colours.txt 拆分為多個檔案,你可以在 awk 中包含重定向語句來重定向每條查詢:

這將生成名為 yellow.txt、red.txt 等檔案。

在下一篇文章中,你將了解有關欄位,記錄和一些強大的 awk 變數的更多資訊。

本文改編自社群技術播客 Hacker Public Radio 。

via: https://opensource.com/article/19/10/intro-awk

  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Appium自動化測試入門教程No.8——定位控制元件