精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Linux 三劍客之 Awk 實戰詳解教程

系統 Linux
我們知道 Linux 三劍客,它們是 grep、sed、awk。在前邊已經講過 grep 和 sed,沒看過的同學可以直接點擊閱讀,今天要分享的是更為強大的 awk。

[[387499]]

我們知道 Linux 三劍客,它們是 grep、sed、awk。在前邊已經講過 grep 和 sed,沒看過的同學可以直接點擊閱讀,今天要分享的是更為強大的 awk。

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

 

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

這篇文章,我仍然秉持著 實用、實踐 原則,提供大量的示例,但不會面面俱到。通過本文可以幫助你,快速將 awk 運用起來,這些東西足夠應付工作中大多數應用場景。

場景

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

1. 能夠將給定的文本內容,按照我們期望的格式輸出顯示,打印成報表。

2. 分析處理系統日志,快速地分析挖掘我們關心的數據,并生成統計信息;

3. 方便地用來統計數據,比如網站的訪問量,訪問的 IP 量等;

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

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

......

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

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

原理

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

awk 基本命令格式

 

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

 

  • 首先,執行關鍵字 BEGIN 標識的 {} 中的命令;
  • 完成 BEGIN 大括號中命令的后,開始執行 body 命令;
  • 逐行讀取數據,默認讀到 \n 分割的內容為一條 記錄,其實就是行的概念;
  • 將記錄按照指定的分隔符劃分為 字段,其實就是列的概念;
  • 循環執行 body 塊中的命令,每讀取一行,執行一次 body,最終完成 body 執行;
  • 最后,執行 END 命令,通常會在 END 中輸出最后的結果;

awk 是輸入驅動的,有多少輸入行,就會執行多少次 body 命令。

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

實戰 - 入門

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

 

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

 

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

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

 

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

實戰 - 進階

(一)過濾記錄

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

 

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

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

(二)內置變量

awk 內置了一些變量,更方便我們對數據的處理

 

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

(三)指定分隔符

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

 

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

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

 

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

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

 

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

實戰 - 高級

(一)條件匹配

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

 

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

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

 

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

模式取反可以使用 ! 符號

 

(二)拆分文件

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

 

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

(三)if 語句

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

 

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

(四)統計

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

 

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

再來看一個例子,統計每個用戶的進程占用了多少內存,注意取值的是 RSS 那一列

 

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

(五)字符串

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

 

awk 內置支持一系列的字符串函數,length 計算字符串長度,toupper 函數轉換字符串為大寫。

實戰 - 技巧

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

 

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

 

執行 awk 結果如下

 

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

  • 在 BEGIN 階段,我們初始化了相關變量,并打印了表頭的格式
  • 在 body 階段,我們讀取每一行數據,計算該學科和該同學的總成績
  • 在 END 階段,我們先打印了表尾的格式,并打印總成績,以及計算了平均值

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

總結歸納

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

(一)內置變量

1. 每一行內容記錄,叫做記錄,英文名稱 Record

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

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

  • NR:表示當前的行數;
  • NF:表示當前的列數;
  • RS:行分隔符,默認是換行;
  • FS:列分隔符,默認是空格和制表符;
  • OFS:輸出列分隔符,用于打印時分割字段,默認為空格
  • ORS:輸出行分隔符,用于打印時分割記錄,默認為換行符

(二)輸出格式

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

基本用法

 

常用的格式化方式:

  • %d 十進制有符號整數
  • %u 十進制無符號整數
  • %f 浮點數
  • %s 字符串
  • %c 單個字符
  • %e 指數形式的浮點數
  • %x %X 無符號以十六進制表示的整數
  • %0 無符號以八進制表示的整數
  • %g 自動選擇合適的表示法
  • \n 換行符
  • \t Tab符

(三)編程語句

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

  • 條件語句
  • 循環語句
  • 數組
  • 函數

(四)常用函數

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

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

  • index(s, t) 返回子串 t 在 s 中的位置
  • length(s) 返回字符串 s 的長度
  • split(s, a, sep) 分割字符串,并將分割后的各字段存放在數組 a 中
  • substr(s, p, n) 根據參數,返回子串
  • tolower(s) 將字符串轉換為小寫
  • toupper(s) 將字符串轉換為大寫

 

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

本文轉載自微信公眾號「編程修養」,可以通過以下二維碼關注。轉載本文請聯系編程修養公眾號。

 

責任編輯:武曉燕 來源: 編程修養
相關推薦

2019-06-27 10:06:54

Linux 性能工具

2021-05-13 10:25:29

Linuxgrep命令

2019-08-20 14:29:45

grepsedawk

2023-10-04 00:20:31

grepLinux

2011-03-28 16:04:44

nagios

2017-07-25 08:53:14

CorrectLinkCCA-SD算法

2009-02-26 18:22:49

桌面虛擬化Linux

2018-05-04 15:18:01

DockerDocker Comp容器

2010-02-04 16:22:21

2024-06-04 00:20:00

Python函數

2017-10-16 15:04:32

javaAndroidAPT技術

2009-02-27 09:10:53

Linux操作系統虛擬化三劍客

2011-08-06 23:58:34

愛普生投影機

2011-07-04 09:07:54

2023-11-25 17:08:47

ChatbotLLAMALangChain

2025-04-22 09:39:46

Python爬蟲網頁數據抓取

2009-03-19 20:52:58

LinuxPHPCMS

2011-04-11 11:01:03

AndroidHTC蘋果

2014-11-26 10:18:32

Cloud Setupwindows在線打包工具

2023-09-05 10:04:35

Linux運維
點贊
收藏

51CTO技術棧公眾號

国产综合色产在线精品| 日韩在线视频一区二区三区| 国产亚洲欧美色| 国产精品亚洲欧美导航| 天天做夜夜爱爱爱| 538任你躁精品视频网免费| 亚洲福利电影网| 欧美一区亚洲二区| 国产欧美久久久精品免费| 精品91在线| 亚洲午夜精品久久久久久久久久久久 | 51xtv成人影院| 日韩欧美视频| 亚洲精品一区二区三区99| 最近免费中文字幕中文高清百度| 色欧美激情视频在线| 成人美女视频在线观看| 国产精品美女av| 一区二区三区免费高清视频| 自拍偷拍一区| 日韩你懂的在线播放| 欧美成人黑人猛交| 黄页网站在线| 国产精品国产三级国产专播品爱网| 波多野结衣一区二区三区在线观看 | 国产精品97在线| 2024最新电影在线免费观看| 国产午夜精品一区二区三区四区| 岛国视频一区免费观看| 一区二区三区免费在线视频| 亚洲女同同性videoxma| 欧美激情18p| 91麻豆精品久久毛片一级| 亚洲区小说区图片区qvod按摩| 日韩三级视频在线看| 一本久道综合色婷婷五月| a√中文在线观看| 亚洲视频一区在线| 五月天综合网| 国产资源在线观看| 成人av电影在线网| www.久久爱.cn| 国产黄a三级三级三级| 美女视频免费一区| 国产精品ⅴa在线观看h| 亚洲AV无码成人精品区东京热| 伊人成人网在线看| 欧美国产日韩xxxxx| 成人免费毛片xxx| 日韩一区二区中文| 中文国产成人精品| 国产馆在线观看| av中文一区| 揄拍成人国产精品视频| 欧美18—19性高清hd4k| 精品久久中文| 一区二区三区国产在线观看| 90岁老太婆乱淫| 国产99久久久国产精品成人免费| 日韩成人在线免费观看| 亚洲av成人无码一二三在线观看| 激情小说亚洲色图| 亚洲二区在线播放视频| 久久福利小视频| 欧美调教在线| 亚洲欧美三级在线| 天堂在线中文视频| 日韩欧美精品综合| 欧美老女人在线视频| 欧美日韩免费一区二区| 影音先锋久久久| 欧美一区二区.| 四虎影院在线免费播放| 美女性感视频久久| 91中文字幕一区| 丰满少妇一级片| 91网站最新网址| 日本精品一区二区三区不卡无字幕| 国产网站在线播放| 国产精品剧情在线亚洲| 无码人妻aⅴ一区二区三区日本| h片在线免费| 午夜影院在线观看欧美| www.av中文字幕| 日韩新的三级电影| 在线电影欧美成精品| 中国特级黄色大片| 亚洲婷婷丁香| 久久精品青青大伊人av| 精品无码av在线| 三级亚洲高清视频| 国产一区视频在线播放| 亚洲男人天堂久久| 国产欧美在线观看一区| 欧美日韩一级在线| 欧美日韩在线观看首页| 欧美天堂一区二区三区| 在线视频观看一区二区| 日韩激情毛片| 日韩视频永久免费观看| 国产精品99精品| 日本美女一区二区三区视频| 亚洲精品免费一区二区三区| 亚洲人午夜射精精品日韩| 中文字幕精品一区二区精品绿巨人| 日本老太婆做爰视频| 美女网站在线看| 91麻豆精品国产无毒不卡在线观看| 精品国产av色一区二区深夜久久 | 五月婷婷开心网| 久久99精品久久久久久久久久久久 | 久久蜜臀中文字幕| 国产免费一区二区三区四在线播放| 午夜激情在线播放| 日韩亚洲国产中文字幕欧美| 久久久久无码精品国产sm果冻| 国产精品va| 国产精品视频yy9099| 天天射天天操天天干| 中文在线一区二区| 欧美国产激情视频| 亚洲精品一区国产| 北条麻妃久久精品| 无码久久精品国产亚洲av影片| 国产999精品久久| 一区高清视频| 色香欲www7777综合网| 亚洲成人久久久久| 欧美日韩精品在线观看视频| 精品一区二区三区视频| 欧美一区二视频在线免费观看| 波多野结衣中文在线| 欧美丰满美乳xxx高潮www| 大又大又粗又硬又爽少妇毛片| 国产在线不卡| 51国产成人精品午夜福中文下载| 福利在线播放| 一本到一区二区三区| 日本少妇xxxx| 在线不卡欧美| 国产精品亚洲综合| 女人天堂av在线播放| 欧美一区二区久久| 婷婷激情四射网| 精品一区二区在线视频| 亚洲日本一区二区三区在线不卡| 欧美亚洲大片| 国产亚洲综合久久| 高潮毛片又色又爽免费| 久久久综合网站| 成人黄色片视频| 亚洲理论电影片| 日本高清不卡在线| 可以在线观看的黄色| 日韩欧美国产中文字幕| 手机免费看av片| 99精品国产福利在线观看免费| 国产精品播放| 中文字幕中文字幕在线中高清免费版 | 亚洲免费视频成人| 爱情岛论坛亚洲自拍| 亚洲欧美综合| 国产欧美韩日| 厕沟全景美女厕沟精品| 一区二区欧美亚洲| 国产又粗又猛又黄又爽| 亚洲老司机在线| 无码任你躁久久久久久老妇| 国产日韩1区| 日产精品高清视频免费| 欧美xx视频| 日韩在线观看你懂的| 精品久久国产视频| 亚洲成av人片在线| 久久久久久亚洲中文字幕无码| 日韩精品高清不卡| 天堂av免费看| 国语一区二区三区| 国产精品第一第二| a级毛片免费观看在线| 欧美精品一区二| 久久人人爽人人爽人人片av免费| 国产精品久久毛片a| 日本中文字幕精品| 香蕉av777xxx色综合一区| 一本一本久久a久久精品综合妖精| а天堂中文最新一区二区三区| 久久久亚洲影院你懂的| 麻豆国产在线播放| 欧美成人女星排名| 波多野结衣毛片| 一区二区三区四区蜜桃| 欧美激情aaa| 国产成人在线观看免费网站| 国产午夜伦鲁鲁| 婷婷另类小说| 免费毛片一区二区三区久久久| 日本a人精品| 91福利视频网| 蜜桃视频在线观看www社区| 亚洲国产91精品在线观看| 中文字幕a级片| 亚洲国产wwwccc36天堂| 亚洲天堂av中文字幕| 成人av资源在线观看| www.com操| 亚洲一区二区三区高清不卡| 国产手机视频在线观看| 国产一区二区三区天码| 超碰97国产在线| 国产精品久久久久久吹潮| 午夜精品一区二区三区在线| 精品自拍一区| 国产一区二区av| 人妻一区二区三区四区| 欧美一级二级在线观看| 成人免费一区二区三区| 欧美日韩色婷婷| 青娱乐国产精品| 国产精品看片你懂得| 中国毛片在线观看| av成人动漫在线观看| wwwxxxx在线观看| 日韩精品亚洲一区二区三区免费| 黄页网站在线观看视频| 综合一区在线| 一本一道久久a久久综合精品| 国产探花一区| 欧美久久综合性欧美| 久久97精品| 痴汉一区二区三区| 91亚洲无吗| 91香蕉嫩草影院入口| 久久天天久久| 国产精品自产拍高潮在线观看| 国产精品专区免费| 青草成人免费视频| 蜜桃视频在线观看播放| 97精品久久久中文字幕免费| 免费在线国产视频| 免费97视频在线精品国自产拍| 欧美高清视频| 按摩亚洲人久久| a级片国产精品自在拍在线播放| 俺也去精品视频在线观看| 麻豆系列在线观看| 久久精品视频亚洲| 成人在线观看亚洲| 久久国产精品视频| 少妇视频在线| 久久久免费高清电视剧观看| 黑人玩欧美人三根一起进| 久久久久久久av| 九色porny丨入口在线| 69久久夜色精品国产69| 小早川怜子影音先锋在线观看| 91精品国产高清| 欧美aa免费在线| 日韩av高清不卡| 精品裸体bbb| 国产欧美精品一区二区| 精品国产亚洲一区二区三区| 波多野结衣一区二区三区在线观看| 国产劲爆久久| 乱一区二区三区在线播放| 欧美午夜精品一区二区三区电影| 日韩欧美99| 午夜精品一区二区三区国产| 欧美 日韩 国产精品| 一本色道久久综合亚洲精品不卡| 国产原创中文在线观看 | 日本中文字幕在线不卡| 成人午夜视频在线观看| 偷拍女澡堂一区二区三区| 国产肉丝袜一区二区| 国产又色又爽又高潮免费| 一区二区三区加勒比av| 国产成人免费看| 欧美天堂亚洲电影院在线播放| 国产喷水福利在线视频| 亚洲精品一区二区三区精华液 | 日韩中文字幕一区二区高清99| 99三级在线| 中文有码一区| 大桥未久一区二区三区| 亚洲永久免费精品| 天堂在线一区二区三区| 波多野结衣中文字幕一区二区三区| 亚洲第一成人网站| 亚洲精品自拍动漫在线| 中文字幕高清在线免费播放| 9191久久久久久久久久久| 丰满肉肉bbwwbbww| 中文字幕国产亚洲2019| bl在线肉h视频大尺度| 国产精品视频不卡| 精品亚洲自拍| 麻豆md0077饥渴少妇| 国产日韩1区| 亚洲精品久久久久久| 久久久国产午夜精品| 久久精品第一页| 欧美视频自拍偷拍| 五月婷婷伊人网| 欧美巨大黑人极品精男| 欧美成人app| 久久草.com| 狠狠噜噜久久| 激情图片中文字幕| 国产视频一区在线播放| 中文字幕亚洲在线| www香蕉视频| 在线视频日本亚洲性| 乱人伦视频在线| 99热99热| 在线一区免费| 五月婷婷六月丁香激情| 久久久精品国产免费观看同学| 久久久久久久久久久久久久免费看| 欧美综合欧美视频| 先锋av资源站| 国语对白做受69| 伊色综合久久之综合久久| 日韩视频在线免费播放| 日本免费新一区视频| 亚洲国产av一区| 欧美性猛交xxxx乱大交| 人妻一区二区三区四区| 欧美激情乱人伦| 日韩不卡在线视频| 欧美性受黑人性爽| 久久电影网电视剧免费观看| 中文字幕免费在线看线人动作大片| 欧美日韩国产专区| 色呦呦中文字幕| 66m—66摸成人免费视频| 成人高潮视频| 福利视频一区二区三区四区| 国产大片一区二区| 好吊色视频在线观看| 欧美一级欧美三级| 最新国产露脸在线观看| αv一区二区三区| 黄色亚洲在线| 日韩精品视频一区二区| 亚洲成a人片综合在线| 高潮毛片7777777毛片| 欧美丰满少妇xxxxx| 亚洲国产中文在线| 欧美黑人在线观看| 成人国产精品免费观看动漫| 国产午夜激情视频| 香蕉久久99| www.国产二区| 成人午夜精品在线| 日韩av一二三区| 日韩电视剧免费观看网站| 色综合桃花网| 色播五月综合| 国产一区欧美二区| 免费在线黄色片| 亚洲国产女人aaa毛片在线| 激情国产在线| 日韩激情久久| 精品写真视频在线观看| 久久久一二三区| 日韩av在线高清| 97精品国产99久久久久久免费| 亚洲欧洲在线一区| 国产成人av资源| 国产精品视频免费播放| 色悠悠久久88| 亚洲国产欧美在线观看| 国产日韩一区二区在线| 中文一区二区完整视频在线观看| 国产精品欧美激情在线| 欧美极度另类性三渗透| 婷婷成人在线| 99sesese| 午夜精品福利在线| 福利成人在线观看| wwwxx欧美| 日韩国产一区二| 欧美黑人精品一区二区不卡| 国产偷国产偷亚洲清高网站| 久久三级毛片| 国产av天堂无码一区二区三区| 国产欧美久久久精品影院| 国产suv精品一区二区69| 91a在线视频| 亚洲精品a级片| 能免费看av的网站| 欧美一区二区三区影视| 在线观看欧美日韩电影| av不卡在线免费观看| 97se亚洲国产综合自在线| 91麻豆成人精品国产| 欧美在线视频一区二区| 欧美ab在线视频| 色婷婷在线影院|