awk 入門 —— 強大的文字分析工具
讓我們開始使用它。
awk
是用於 Unix 和類 Unix 系統的強大文字解析工具,但是由於它有可程式設計函式,因此你可以用它來執行常規解析任務,因此它也被視為一種程式語言。你可能不會使用 awk
開發下一個 GUI 應用,並且它可能不會代替你的預設指令碼語言,但是它是用於特定任務的強大程式。
這些任務或許是驚人的多樣化。瞭解 awk
可以解決你的哪些問題的最好方法是學習 awk
。你會驚訝於 awk
如何幫助你完成更多工作,卻花費更少的精力。
awk
的基本語法是:
awk [options] 'pattern {action}' file
首先,建立此示例檔案並將其儲存為 colours.txt
。
name color amount
apple red 4
banana yellow 6
strawberry red 3
grape purple 10
apple green 8
plum purple 2
kiwi brown 4
potato brown 9
pineapple yellow 5
資料被一個或多個空格分隔為列。以某種方式組織要分析的資料是很常見的。它不一定總是由空格分隔的列,甚至可以不是逗號或分號,但尤其是在日誌檔案或資料轉儲中,通常有一個可預測的格式。你可以使用資料格式來幫助 awk
提取和處理你關注的資料。
列印列
在 awk
中,print
函式顯示你指定的內容。你可以使用許多預定義的變數,但是最常見的是文字檔案中以整數命名的列。試試看:
$ awk '{print $2;}' colours.txt
color
red
yellow
red
purple
green
purple
brown
brown
yellow
在這裡,awk
顯示第二列,用 $2
表示。這是相對直觀的,因此你可能會猜測 print $1
顯示第一列,而 print $3
顯示第三列,依此類推。
要顯示全部列,請使用 $0
。
美元符號($
)後的數字是表示式,因此 $2
和 $(1+1)
是同一意思。
有條件地選擇列
你使用的示例檔案非常結構化。它有一行充當標題,並且各列直接相互關聯。通過定義條件,你可以限定 awk
在找到此資料時返回的內容。例如,要檢視第二列中與 yellow
匹配的項並列印第一列的內容:
awk '$2=="yellow"{print $1}' file1.txt
banana
pineapple
正規表示式也可以工作。此表示式近似匹配 $2
中以 p
開頭跟上任意數量(一個或多個)字元後繼續跟上 p
的值:
$ awk '$2 ~ /p.+p/ {print $0}' colours.txt
grape purple 10
plum purple 2
數字能被 awk
自然解釋。例如,要列印第三列包含大於 5 的整數的行:
awk '$3>5 {print $1, $2}' colours.txt
name color
banana yellow
grape purple
apple green
potato brown
欄位分隔符
預設情況下,awk
使用空格作為欄位分隔符。但是,並非所有文字檔案都使用空格來定義欄位。例如,用以下內容建立一個名為 colours.csv
的檔案:
name,color,amount
apple,red,4
banana,yellow,6
strawberry,red,3
grape,purple,10
apple,green,8
plum,purple,2
kiwi,brown,4
potato,brown,9
pineapple,yellow,5
只要你指定將哪個字元用作命令中的欄位分隔符,awk
就能以完全相同的方式處理資料。使用 --field-separator
(或簡稱為 -F
)選項來定義分隔符:
$ awk -F"," '$2=="yellow" {print $1}' file1.csv
banana
pineapple
儲存輸出
使用輸出重定向,你可以將結果寫入檔案。例如:
$ awk -F, '$3>5 {print $1, $2} colours.csv > output.txt
這將建立一個包含 awk
查詢內容的檔案。
你還可以將檔案拆分為按列資料分組的多個檔案。例如,如果要根據每行顯示的顏色將 colours.txt
拆分為多個檔案,你可以在 awk
中包含重定向語句來重定向每條查詢:
$ awk '{print > $2".txt"}' colours.txt
這將生成名為 yellow.txt
、red.txt
等檔案。
在下一篇文章中,你將瞭解有關欄位,記錄和一些強大的 awk 變數的更多資訊。
本文改編自社群技術播客 Hacker Public Radio。
via: https://opensource.com/article/19/10/intro-awk
作者:Seth Kenlon 選題:lujun9972 譯者:geekpi 校對:wxy
訂閱“Linux 中國”官方小程式來檢視
相關文章
- awk的強大操作
- awk 入門教程
- 5分鐘入門AWK
- Linux三劍客之awk入門指引Linux
- NLP入門(十)使用LSTM進行文字情感分析
- 使用 awk 命令統計文字
- i人的福音!一個強大開源的文字轉語音工具!
- Python入門教程—資料分析工具PandasPython
- 強大的 Guava 工具類Guava
- 12、強大的內網域滲透提權分析工具——BloodHound內網
- 文字挖掘和文字分析的九大應用場景
- 如何使用awk處理文字內容
- UltraCompare for Mac(強大的文字對比工具)v23.1.0.23中文啟用版Mac
- 強大的文字對比工具:UltraCompare for Mac v23.1.0.23中文啟用版Mac
- gTTS: 強大的Python文字轉語音庫TTSPython
- GoFrame - 強大的工具鏈集合GoFrame
- awk取文字中兩個字串之間的部分字串
- NLPIR文字分析工具的功能和特色介紹
- 地表最強 Markdown 文字編輯工具——Obsidian
- CoreText 入門(一) 文字繪製
- RPG 製作大師:古老的遊戲開發入門工具遊戲開發
- 強大的CSS:文字下波浪線動畫效果CSS動畫
- 方正銳圖:強大的分色工具
- Typinator 8 for Mac - 文字快捷輸入工具Mac
- 【Pandas學習筆記01】強大的分析結構化資料的工具集筆記
- Web聊天工具的富文字輸入框Web
- UltraEdit文字編輯器編寫強大的宏教程
- Python 股票分析入門Python
- 工控安全入門分析
- FineBI入門案例分析
- 這裡是強化學習入門,的入門 | 絕對新手友好強化學習
- 「 神器 」強大的系統清理工具
- SecureCRT for Mac(強大的終端SSH工具)SecurecrtMac
- 強大的AWR-Format工具下載ORM
- 強大的影片轉碼工具EditReady for MacMac
- EditReady for Mac(強大的影片轉碼工具)Mac
- 強大的影像處理工具:ps 2022
- SecureCRT for Mac 強大的終端SSH工具SecurecrtMac