小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

awk 入門——強(qiáng)大的文本分析工具

 copy_left 2020-03-10

awk 入門——強(qiáng)大的文本分析工具

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

awk 是用于 Unix 和類 Unix 系統(tǒng)的強(qiáng)大文本解析工具,但是由于它有可編程函數(shù),因此你可以用它來執(zhí)行常規(guī)解析任務(wù),因此它也被視為一種編程語言。你可能不會使用 awk 開發(fā)下一個(gè) GUI 應(yīng)用,并且它可能不會代替你的默認(rèn)腳本語言,但是它是用于特定任務(wù)的強(qiáng)大程序。

這些任務(wù)或許是驚人的多樣化。了解 awk 可以解決你的哪些問題的最好方法是學(xué)習(xí) awk。你會驚訝于 awk 如何幫助你完成更多工作,卻花費(fèi)更少的精力。

awk 的基本語法是:

首先,創(chuàng)建此示例文件并將其保存為 colours.txt。

數(shù)據(jù)被一個(gè)或多個(gè)空格分隔為列。以某種方式組織要分析的數(shù)據(jù)是很常見的。它不一定總是由空格分隔的列,甚至可以不是逗號或分號,但尤其是在日志文件或數(shù)據(jù)轉(zhuǎn)儲中,通常有一個(gè)可預(yù)測的格式。你可以使用數(shù)據(jù)格式來幫助 awk 提取和處理你關(guān)注的數(shù)據(jù)。

打印列

在 awk 中,print 函數(shù)顯示你指定的內(nèi)容。你可以使用許多預(yù)定義的變量,但是最常見的是文本文件中以整數(shù)命名的列。試試看:

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

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

美元符號($)后的數(shù)字是表達(dá)式,因此 $2 和 $(1+1) 是同一意思。

有條件地選擇列

你使用的示例文件非常結(jié)構(gòu)化。它有一行充當(dāng)標(biāo)題,并且各列直接相互關(guān)聯(lián)。通過定義條件,你可以限定 awk 在找到此數(shù)據(jù)時(shí)返回的內(nèi)容。例如,要查看第二列中與 yellow 匹配的項(xiàng)并打印第一列的內(nèi)容:

正則表達(dá)式也可以工作。此表達(dá)式近似匹配 $2 中以 p 開頭跟上任意數(shù)量(一個(gè)或多個(gè))字符后繼續(xù)跟上 p 的值:

數(shù)字能被 awk 自然解釋。例如,要打印第三列包含大于 5 的整數(shù)的行:

字段分隔符

默認(rèn)情況下,awk 使用空格作為字段分隔符。但是,并非所有文本文件都使用空格來定義字段。例如,用以下內(nèi)容創(chuàng)建一個(gè)名為 colours.csv 的文件:

只要你指定將哪個(gè)字符用作命令中的字段分隔符,awk 就能以完全相同的方式處理數(shù)據(jù)。使用 --field-separator(或簡稱為 -F)選項(xiàng)來定義分隔符:

保存輸出

使用輸出重定向,你可以將結(jié)果寫入文件。例如:

這將創(chuàng)建一個(gè)包含 awk 查詢內(nèi)容的文件。

你還可以將文件拆分為按列數(shù)據(jù)分組的多個(gè)文件。例如,如果要根據(jù)每行顯示的顏色將 colours.txt 拆分為多個(gè)文件,你可以在 awk 中包含重定向語句來重定向每條查詢:

這將生成名為 yellow.txt、red.txt 等文件。

在下一篇文章中,你將了解有關(guān)字段,記錄和一些強(qiáng)大的 awk 變量的更多信息。

本文改編自社區(qū)技術(shù)播客 Hacker Public Radio 。

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多