亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 服務器 > Linux服務器 > 正文

詳解Linux awk 入門教程

2024-09-05 23:05:23
字體:
來源:轉載
供稿:網友

awk是處理文本文件的一個應用程序,幾乎所有 Linux 系統都自帶這個程序。

它依次處理文件的每一行,并讀取里面的每一個字段。對于日志、CSV 那樣的每行格式相同的文本文件,awk可能是最方便的工具。

Linux,awk

awk其實不僅僅是工具軟件,還是一種編程語言。不過,本文只介紹它的命令行用法,對于大多數場合,應該足夠用了。

一、基本用法

awk的基本用法就是下面的形式。

# 格式$ awk 動作 文件名# 示例$ awk '{print $0}' demo.txt

上面示例中,demo.txt是awk所要處理的文本文件。前面單引號內部有一個大括號,里面就是每一行的處理動作print $0。其中,print是打印命令,$0代表當前行,因此上面命令的執行結果,就是把每一行原樣打印出來。

下面,我們先用標準輸入(stdin)演示上面這個例子。

$ echo 'this is a test' | awk '{print $0}'this is a test

上面代碼中,print $0就是把標準輸入this is a test,重新打印了一遍。

awk會根據空格和制表符,將每一行分成若干字段,依次用$1、$2、$3代表第一個字段、第二個字段、第三個字段等等。

$ echo 'this is a test' | awk '{print $3}'a

上面代碼中,$3代表this is a test的第三個字段a。

下面,為了便于舉例,我們把/etc/passwd文件保存成demo.txt。

root:x:0:0:root:/root:/usr/bin/zshdaemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologinbin:x:2:2:bin:/bin:/usr/sbin/nologinsys:x:3:3:sys:/dev:/usr/sbin/nologinsync:x:4:65534:sync:/bin:/bin/sync

這個文件的字段分隔符是冒號(:),所以要用-F參數指定分隔符為冒號。然后,才能提取到它的第一個字段。

$ awk -F ':' '{ print $1 }' demo.txtrootdaemonbinsyssync

語法

awk [選項參數] 'script' var=value file(s)

awk [選項參數] -f scriptfile var=value file(s)

二、變量

除了$ + 數字表示某個字段,awk還提供其他一些變量。

變量NF表示當前行有多少個字段,因此$NF就代表最后一個字段。

$ echo 'this is a test' | awk '{print $NF}'test$(NF-1)代表倒數第二個字段。$ awk -F ':' '{print $1, $(NF-1)}' demo.txtroot /rootdaemon /usr/sbinbin /binsys /devsync /bin

上面代碼中,print命令里面的逗號,表示輸出的時候,兩個部分之間使用空格分隔。
變量NR表示當前處理的是第幾行。

$ awk -F ':' '{print NR ") " $1}' demo.txt

1) root
2) daemon
3) bin
4) sys
5) sync

上面代碼中,print命令里面,如果原樣輸出字符,要放在雙引號里面。

awk的其他內置變量如下。

FILENAME:當前文件名
FS:字段分隔符,默認是空格和制表符。
RS:行分隔符,用于分割每一行,默認是換行符。
OFS:輸出字段的分隔符,用于打印時分隔字段,默認為空格。
ORS:輸出記錄的分隔符,用于打印時分隔記錄,默認為換行符。
OFMT:數字輸出的格式,默認為%.6g

三、函數

awk還提供了一些內置函數,方便對原始數據的處理。

函數toupper()用于將字符轉為大寫。

$ awk -F ':' '{ print toupper($1) }' demo.txtROOTDAEMONBINSYSSYNC

上面代碼中,第一個字段輸出時都變成了大寫。

其他常用函數如下。

tolower():字符轉為小寫。
length():返回字符串長度。
substr():返回子字符串。
sin():正弦。
cos():余弦。
sqrt():平方根。
rand():隨機數。

awk內置函數的完整列表,可以查看手冊。

四、條件

awk允許指定輸出條件,只輸出符合條件的行。

輸出條件要寫在動作的前面。

$ awk '條件 動作' 文件名

請看下面的例子。

$ awk -F ':' '/usr/ {print $1}' demo.txtrootdaemonbinsys

上面代碼中,print命令前面是一個正則表達式,只輸出包含usr的行。

下面的例子只輸出奇數行,以及輸出第三行以后的行。

# 輸出奇數行$ awk -F ':' 'NR % 2 == 1 {print $1}' demo.txtrootbinsync# 輸出第三行以后的行$ awk -F ':' 'NR >3 {print $1}' demo.txtsyssync

下面的例子輸出第一個字段等于指定值的行。

$ awk -F ':' '$1 == "root" {print $1}' demo.txtroot$ awk -F ':' '$1 == "root" || $1 == "bin" {print $1}' demo.txtrootbin

 

五、if 語句

awk提供了if結構,用于編寫復雜的條件。

$ awk -F ':' '{if ($1 > "m") print $1}' demo.txtrootsyssync

上面代碼輸出第一個字段的第一個字符大于m的行。

if結構還可以指定else部分。

$ awk -F ':' '{if ($1 > "m") print $1; else print "---"}' demo.txtroot------syssync

六、參考鏈接

An Awk tutorial by Example, Greg Grothaus

30 Examples for Awk Command in Text Processing, Mokhtar Ebrahim

總結

以上所述是小編給大家介紹的Linx awk 入門教程,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VEVB武林網網站的支持!


注:相關教程知識閱讀請移步到服務器教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产啪精品视频| 啊v视频在线一区二区三区| 精品久久久久久久久久ntr影视| 久久成人18免费网站| 精品香蕉在线观看视频一| 色偷偷亚洲男人天堂| 久久精品久久精品亚洲人| 国产成人中文字幕| 狠狠躁夜夜躁久久躁别揉| 国产97人人超碰caoprom| 日韩极品精品视频免费观看| 欧美在线免费视频| 亚洲性日韩精品一区二区| 成人在线免费观看视视频| 最近2019中文字幕第三页视频| 日韩视频在线免费| 亚洲国产欧美久久| 中文精品99久久国产香蕉| 91色视频在线观看| 成人精品久久一区二区三区| 亚洲综合中文字幕在线| 欧美日韩国产999| 亚洲人成在线观| 日韩国产高清视频在线| 草民午夜欧美限制a级福利片| 国产精品视频白浆免费视频| 精品一区精品二区| 日韩免费中文字幕| 色老头一区二区三区在线观看| 欧美在线免费观看| 欧美乱妇40p| 国产精欧美一区二区三区| 国产在线拍揄自揄视频不卡99| 日本久久久久久久| 亚洲欧美日韩国产中文| 欧美黄色片在线观看| 91免费高清视频| 亚洲а∨天堂久久精品9966| 91嫩草在线视频| 亚洲人精品午夜在线观看| 国产aaa精品| 亚洲精品丝袜日韩| 日韩免费高清在线观看| 日韩中文av在线| 日韩有码在线视频| 日本欧美黄网站| 国产91网红主播在线观看| 欧美日产国产成人免费图片| 精品女厕一区二区三区| 中日韩午夜理伦电影免费| 亚洲人成电影网站色…| 久久久噜噜噜久久中文字免| 中文字幕视频在线免费欧美日韩综合在线看| 国产精品一久久香蕉国产线看观看| 日韩精品中文在线观看| 亚洲成人久久网| 日韩电影免费观看在线| 精品亚洲永久免费精品| 日韩av在线最新| 国产精品69久久久久| 欧美精品一区三区| 日韩精品中文字幕久久臀| 亚洲九九九在线观看| 久久久国产精品x99av| 成人免费视频在线观看超级碰| 九九精品视频在线观看| 国产一区二区精品丝袜| 国产一区二区在线免费视频| 日韩专区中文字幕| 欧美性猛交xxxx乱大交3| 欧美精品一二区| 亚洲三级黄色在线观看| 欧美性资源免费| 日韩亚洲第一页| 国产精品成人观看视频国产奇米| 久久天天躁日日躁| 亚洲国产精品99久久| 欧美日韩国产综合新一区| 亚洲福利视频专区| 国产日韩精品在线| 国产精品7m视频| 色偷偷综合社区| 92裸体在线视频网站| 亚洲欧美福利视频| 日韩成人av在线播放| 成人黄色免费网站在线观看| 97在线视频观看| 日本欧美一二三区| 国产精品99久久久久久人| 亚洲最大av网| 久久久久久久久久久久av| 亚洲女同性videos| 亚洲福利在线播放| 久久91亚洲精品中文字幕奶水| 大荫蒂欧美视频另类xxxx| 国产精品免费看久久久香蕉| 国产精品视频26uuu| 国产精品久久久久福利| 国产成+人+综合+亚洲欧美丁香花| 久久久亚洲影院你懂的| 色综合久综合久久综合久鬼88| 国内成人精品一区| 不卡av电影院| 欧美一区二区三区免费视| 日韩欧美在线观看视频| 久久伊人精品视频| 另类美女黄大片| 国产精品夜色7777狼人| 亚洲日韩欧美视频| 久久久亚洲福利精品午夜| 亚洲精品美女视频| 久久99热精品这里久久精品| 日韩精品免费综合视频在线播放| 日韩毛片在线看| 久久久久免费视频| 国产精品亚洲美女av网站| 成人久久18免费网站图片| xvideos成人免费中文版| 在线播放日韩欧美| 亚洲国产毛片完整版| 日本最新高清不卡中文字幕| 国产精品美女av| 久久久精品国产网站| 精品免费在线视频| 久久影院免费观看| 激情久久av一区av二区av三区| 国产欧美精品久久久| 亚洲日韩中文字幕| 九九久久久久99精品| 国产免费一区二区三区在线能观看| 久久韩国免费视频| 国产一区二区三区毛片| 在线视频亚洲欧美| 亚洲日本aⅴ片在线观看香蕉| 国产精品一区二区三区久久久| 国产精品96久久久久久| 97激碰免费视频| 中文字幕亚洲二区| 欧美劲爆第一页| 国产午夜精品全部视频播放| 97国产一区二区精品久久呦| 欧美性猛交xxxx偷拍洗澡| 狠狠躁天天躁日日躁欧美| 91精品久久久久久久久不口人| 日韩欧美精品网址| 欧美性色xo影院| 精品欧美激情精品一区| 亚洲国产另类 国产精品国产免费| 热门国产精品亚洲第一区在线| 亚洲热线99精品视频| 欧美日韩国产色视频| 色偷偷av一区二区三区| 久久久久99精品久久久久| 国产热re99久久6国产精品| 久久久久一本一区二区青青蜜月| 中文字幕亚洲综合久久筱田步美| 久久精品夜夜夜夜夜久久| 欧美刺激性大交免费视频| 欧美一级电影在线| 97avcom| 日韩av在线直播| xvideos亚洲| 自拍偷拍亚洲欧美| 性金发美女69hd大尺寸|