欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Linux中Awk的功能以及用法是什么

本篇文章給大家分享的是有關Linux中Awk 的功能以及用法是什么,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

創(chuàng)新互聯(lián)堅信:善待客戶,將會成為終身客戶。我們能堅持多年,是因為我們一直可值得信賴。我們從不忽悠初訪客戶,我們用心做好本職工作,不忘初心,方得始終。十載網(wǎng)站建設經(jīng)驗創(chuàng)新互聯(lián)是成都老牌網(wǎng)站營銷服務商,為您提供網(wǎng)站建設、成都做網(wǎng)站、網(wǎng)站設計、成都h5網(wǎng)站建設、網(wǎng)站制作、成都品牌網(wǎng)站建設重慶小程序開發(fā)服務,給眾多知名企業(yè)提供過好品質(zhì)的建站服務。

我們知道 Linux 三劍客,它們是 grep、sed、awk,而今天要分享的是更為強大的 awk。

sed 可以實現(xiàn)非交互式的字符串替換,grep 能夠?qū)崿F(xiàn)有效的過濾功能。與兩者相比,awk  是一款強大的文本分析工具,在對數(shù)據(jù)分析并生成報告時,顯得尤為強悍。

awk 強大的功能,是一般 Linux 命令無法比擬的。我不會告訴你 awk 也是一種編程語言,免得會嚇到你。我們只需把它當做 Linux  下一款強大的文本分析工具即可。

場景

學習具體使用前,先來看下 awk 能干些什么事情:

1. 能夠?qū)⒔o定的文本內(nèi)容,按照我們期望的格式輸出顯示,打印成報表。

2. 分析處理系統(tǒng)日志,快速地分析挖掘我們關心的數(shù)據(jù),并生成統(tǒng)計信息;

3. 方便地用來統(tǒng)計數(shù)據(jù),比如網(wǎng)站的訪問量,訪問的 IP 量等;

4. 通過各種工具的組合,快速地匯總分析系統(tǒng)的運行信息,讓你對系統(tǒng)的運行了如指掌;

5. 強大的腳本語言表達能力,支持循環(huán)、條件、數(shù)組等語法,助你分析更加復雜的數(shù)據(jù);

......

當然 awk 不僅能做這些事情,當你將它的用法融匯貫通時,可以隨心所欲的按照你的意愿,來進行高效的數(shù)據(jù)分析和統(tǒng)計。

不過我們需要知道,awk 不是萬能的,它比較擅長處理格式化的文本,比如 日志、csv 格式數(shù)據(jù)等;

原理

我們先來簡單了解 awk 基本工作原理,通過下邊的圖文講述,希望你能了解 awk 到底是如何工作的。

awk 基本命令格式

Linux中Awk 的功能以及用法是什么

結合下圖來詳細說明 awk 工作原理

Linux中Awk 的功能以及用法是什么

  • 首先,執(zhí)行關鍵字 BEGIN 標識的 {} 中的命令;

  • 完成 BEGIN 大括號中命令的后,開始執(zhí)行 body 命令;

  • 逐行讀取數(shù)據(jù),默認讀到 \n 分割的內(nèi)容為一條 記錄,其實就是行的概念;

  • 將記錄按照指定的分隔符劃分為 字段,其實就是列的概念;

  • 循環(huán)執(zhí)行 body 塊中的命令,每讀取一行,執(zhí)行一次 body,最終完成 body 執(zhí)行;

  • 最后,執(zhí)行 END 命令,通常會在 END 中輸出最后的結果;

awk 是輸入驅(qū)動的,有多少輸入行,就會執(zhí)行多少次 body 命令。

我們在下邊的示例學習中,要時刻記著:記錄 (Record) 就是行,字段 (Field) 就是列,BEGIN 是預處理階段,body 是 awk  真正工作的階段,END 是最后處理階段。

實戰(zhàn) - 入門

從下邊內(nèi)容開始,我們直接進入到實戰(zhàn)。為了方便舉例,我先把如下信息保存到 file.txt

Linux中Awk 的功能以及用法是什么

好了,我們先來一個最簡單最常用的 awk 示例,輸出第 1、4、8 列:

Linux中Awk 的功能以及用法是什么

大括號里邊的就是 awk 語句,只能被單引號包含,其中,$1..$N表示第幾列,$0 表示整個行內(nèi)容

再來看下 awk 比較實用的功能 格式化輸出。和 C 語言的 printf 格式輸出是一毛一樣,我個人特別喜歡這種格式化方式,而不是 C++  中的流的方式。

Linux中Awk 的功能以及用法是什么

%s 表示字符串占位符,-4表示列寬度為 4,且左對齊,我們還可以根據(jù)需要,列出更復雜的格式來,這里先不詳細舉例了。

實戰(zhàn) - 進階

(一)過濾記錄

有些數(shù)據(jù)可能不是你想要的,可以根據(jù)需要進行過濾

Linux中Awk 的功能以及用法是什么

上邊的過濾條件為,第 3 列為 root 且第 6 列為 10 的行,才會被輸出。

awk 支持各種比較運算符號 !=、>、<、>=、<=,其中 $0 表示整行的所有內(nèi)容。

(二)內(nèi)置變量

awk 內(nèi)置了一些變量,更方便我們對數(shù)據(jù)的處理

Linux中Awk 的功能以及用法是什么

過濾第 3 列為 root 用戶,以及第 2 行內(nèi)容,且打印時輸出行號。NR 表示當前第幾行,NF表示當前行有幾列。

(三)指定分隔符

我們的數(shù)據(jù),不總是以空格為分隔符,我們可以通過 FS 變量指定分隔符。

Linux中Awk 的功能以及用法是什么

我們指定分隔符為 2019,這樣就將行內(nèi)容分割為了兩部分,將 2019 替換成了 *

上邊的命令也可以通過 -F 選項指定分割符

Linux中Awk 的功能以及用法是什么

如果你需要指定多個分隔符,可以這樣做 -F '[;:]'。相信聰明的你,一定能夠理解并融會貫通的。

同樣,awk 可以指定輸出時的分隔符,通過 OFS 變量來設置

Linux中Awk 的功能以及用法是什么

輸出時,各字段用 OFS 指定的符號進行了分隔。

實戰(zhàn) - 高級

(一)條件匹配

列出 root 用戶的所有文件,以及第一行文件

Linux中Awk 的功能以及用法是什么

上邊匹配第三列中包含 root 的行,~ 其實就是正則表達式的匹配。

同樣,awk 可以像 grep 一樣匹配某一行,就像這樣

Linux中Awk 的功能以及用法是什么

另外,可以這樣 /Aug|Dec/ 匹配多個關鍵詞。

模式取反可以使用 ! 符號

Linux中Awk 的功能以及用法是什么

(二)拆分文件

我們來做一件有意思的事情,可以將文本信息拆分為多個文件,下邊命令按照月份(第5列)將文件信息拆分為多個文件

Linux中Awk 的功能以及用法是什么

awk 支持重定向符號 >,直接將每行內(nèi)容重定向到月份命名的文件了,當然你也可以把指定的列輸出到文件

(三)if 語句

復雜的條件判斷,可以使用 awk 的 if 語句,awk  的強大正因為它是個腳本解釋器,擁有一般腳本語言的編程能力,下邊示例通過稍微復雜的條件進行拆分文件

Linux中Awk 的功能以及用法是什么

要注意,if 語句是在大括號里邊的。

(四)統(tǒng)計

統(tǒng)計當前目錄下,所有 *.c、*.h 文件所占用空間大小總和

Linux中Awk 的功能以及用法是什么

第 5 列表示文件大小,每讀取一行就會將該文件大小計算到 sum 變量中,在最后 END 階段打印出 sum,也就是所有文件的大小總和。

再來看一個例子,統(tǒng)計每個用戶的進程占用了多少內(nèi)存,注意取值的是 RSS 那一列

Linux中Awk 的功能以及用法是什么

這里用到了 數(shù)組 和 for 循環(huán),值得一提的是,awk 的數(shù)組可以理解為字典或 Map,key 可以是數(shù)值和字符串,這種數(shù)據(jù)類型在平時很常用。

(五)字符串

通過下邊簡單示例,展示 awk 對字符串操作的支持

Linux中Awk 的功能以及用法是什么

awk 內(nèi)置支持一系列的字符串函數(shù),length 計算字符串長度,toupper 函數(shù)轉(zhuǎn)換字符串為大寫。

實戰(zhàn) - 技巧

為了從整體上理解 awk 工作機制,我們再來看一個綜合的示例,假設有一個學生成績單:

Linux中Awk 的功能以及用法是什么

由于此示例程序稍顯復雜,在命令行上不易讀,另外呢,也想通過此案例介紹另外一種 awk 的執(zhí)行方式,我們的 awk 腳本如下:

Linux中Awk 的功能以及用法是什么

執(zhí)行 awk 結果如下

Linux中Awk 的功能以及用法是什么

我們可以將復雜的 awk 語句寫入腳本文件 cal.awk,然后通過 -f 選項指定從腳本文件執(zhí)行。

  • 在 BEGIN 階段,我們初始化了相關變量,并打印了表頭的格式

  • 在 body 階段,我們讀取每一行數(shù)據(jù),計算該學科和該同學的總成績

  • 在 END 階段,我們先打印了表尾的格式,并打印總成績,以及計算了平均值

這個簡單示例,完整的體現(xiàn)了 awk 的工作機制和原理,希望通過此示例能夠幫你真正理解 awk 是如何工作的。

總結歸納

通過上述的示例,我們學習到了 awk 的工作原理,下邊我們來總結下幾個概念和常用的知識點。

(一)內(nèi)置變量

1. 每一行內(nèi)容記錄,叫做記錄,英文名稱 Record

2. 每行中通過分隔符隔開的每一列,叫做字段,英文名稱 Field

明確這幾個概念后,我們來總結幾個重要的內(nèi)置變量:

  • NR:表示當前的行數(shù);

  • NF:表示當前的列數(shù);

  • RS:行分隔符,默認是換行;

  • FS:列分隔符,默認是空格和制表符;

  • OFS:輸出列分隔符,用于打印時分割字段,默認為空格

  • ORS:輸出行分隔符,用于打印時分割記錄,默認為換行符

(二)輸出格式

awk 提供 printf 函數(shù)進行格式化輸出功能,具體的使用方式和 C 語法基本一致。

基本用法

Linux中Awk 的功能以及用法是什么

常用的格式化方式:

  • %d 十進制有符號整數(shù)

  • %u 十進制無符號整數(shù)

  • %f 浮點數(shù)

  • %s 字符串

  • %c 單個字符

  • %e 指數(shù)形式的浮點數(shù)

  • %x %X 無符號以十六進制表示的整數(shù)

  • %0 無符號以八進制表示的整數(shù)

  • %g 自動選擇合適的表示法

  • \n 換行符

  • \t Tab符

(三)編程語句

awk 不僅是一個 Linux 命令行工具,它其實是一門腳本語言,支持程序設計語言所有的控制結構,它支持:

  • 條件語句

  • 循環(huán)語句

  • 數(shù)組

  • 函數(shù)

(四)常用函數(shù)

awk 內(nèi)置了大量的有用函數(shù)功能,也支持自定義函數(shù),允許你編寫自己的函數(shù)來擴展內(nèi)置函數(shù)。

這里只簡單羅列一些比較常用的字符串函數(shù):

  • index(s, t) 返回子串 t 在 s 中的位置

  • length(s) 返回字符串 s 的長度

  • split(s, a, sep) 分割字符串,并將分割后的各字段存放在數(shù)組 a 中

  • substr(s, p, n) 根據(jù)參數(shù),返回子串

  • tolower(s) 將字符串轉(zhuǎn)換為小寫

  • toupper(s) 將字符串轉(zhuǎn)換為大寫

這里只簡單總結一些常用的字符串功能函數(shù),具體使用方法,還需要你參照前邊的示例程序,舉一反三,運用到實際問題中。

以上就是Linux中Awk 的功能以及用法是什么,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學到更多知識。更多詳情敬請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

新聞標題:Linux中Awk的功能以及用法是什么
本文網(wǎng)址:http://aaarwkj.com/article20/pdigco.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供、網(wǎng)頁設計公司、動態(tài)網(wǎng)站定制網(wǎng)站、電子商務網(wǎng)站建設

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應式網(wǎng)站建設
午夜福利影片免费观看| 最新国产情侣夫妻激情| 亚洲小说欧美激情另类| 国产精品五月婷婷六月丁香| 午夜神马福利激情视频| 色综合色狠狠天天综合色| 91出品国产福利在线| 国产综合永久精品日韩鬼片| 熟女熟妇乱女乱妇综合网| 大片天天看菲色亚洲黄色| 亚洲熟妇av一区二区| 人妻一少妇一区二区三区| 日韩少妇人妻一区二区| 亚洲国产日韩在线精品| 国产丰满熟女视频免费| 久久精品女人天堂av| 三级精品一区二区三区| 午夜视频在线观看麻豆| 亚洲男人的天堂社区av| 蜜臀av首页在线观看| 福利av一区二区三区| 国产视频专区一区二区| 亚洲一区二区三区经典精品| 人妻少妇中文字幕一区| 欧美日韩一区二区不卡视频| 亚洲香蕉视频免费在线观看| 欧美精品久久久久九九九| 熟妇人妻内射一区二区三区| 亚洲成人日韩国产欧美| 国产欧美日韩综合91| 中文字幕在线一区国产精品| 清纯少妇激情四射网站| 黄色大片免费在线观看| 欧美日韩精品在线二区| 女同av免费观看网站| 在线观看免费在线观看免费| 国产成人精品久久一区二区| 久久伊人亚洲中文字幕| 日本精品在线一区二区| 国产视频三级在线观看| 99精品热这里只有精品|