從零開始學習Linux(四十三):Shell編程之a(chǎn)wk命令

1匙赞、awk命令簡介

awk命令是一種處理文本文件的語言,是一個強大的文本分析工具妖碉。
awk命令也可以叫awk編程涌庭,能夠識別非制表符的空格,可以解決cut命令解決不了的問題欧宜。
awk命令非常復雜坐榆,本章節(jié)我們只介紹部分常用的功能。

2冗茸、awk命令格式

命令格式:awk '條件1{動作1} 條件2{動作2}…' 文件名

條件:
一般使用關系表達式作為條件
x > 10 判斷變量x是否大于10席镀;
x >= 10 判斷變量x是否大于等于10;
x <= 10 判斷變量x是否小于等于10夏漱;

動作:
格式化輸出豪诲;
流程控制語句;

3挂绰、awk命令使用說明

創(chuàng)建成績單文件score.txt屎篱,內(nèi)容如下:

3.1、提取成績單中第2列和第4列

執(zhí)行命令:

awk '{printf $2 "\t" $4 "\n"}' score.txt

命令中$2代表第2列葵蒂,$4代表第4列交播。命令中沒有加入任何條件,所以針對的是文件中的每一行數(shù)據(jù)践付。對每一行數(shù)據(jù)打印第2列和第4列秦士。命令執(zhí)行結果如下圖所示:

3.2、提取按空格分隔的內(nèi)容

使用 df -h 命令永高,查看空間占用情況隧土。命令輸出內(nèi)容如下圖所示:

df命令輸出結果是以空格分隔的提针,而非Tab鍵。

執(zhí)行命令次洼,提取輸出結果的中FileSystem列和Mounted列:

df -h | awk '{printf $1 "\t" $6 "\n"}'

命令執(zhí)行結果如下所示:

執(zhí)行以下命令也可以輸出同樣的結果:

df -h | awk '{print $1 "\t" $6}'

兩條命令區(qū)別:

  • printf 不可以自動換行关贵,需要在行尾增加換行符;
  • print 可以在末尾自動換行卖毁;
  • 在Linux系統(tǒng)中沒有print命令只有printf命令,在awk命令中兩個都支持落萎;
3.3亥啦、BEGIN

注意:BEGIN必須是大寫,它是一個條件练链。它的作用是強制第一個執(zhí)行他后面的語句翔脱。

執(zhí)行命令:

awk 'BEGIN{printf "Test Begin \n"}{printf $2 "\t" $4 "\n"}' score.txt

執(zhí)行結果如下圖所示:

BEGIN{printf "Test Begin \n"} 會在輸出文件內(nèi)容第2列和第4列之前輸出一句話Test Begin。

3.4媒鼓、END

同BEGIN相類似届吁,END是強制最后一個執(zhí)行它后面的語句。

同時指定BEGIN和END绿鸣,執(zhí)行命令:

awk 'BEGIN{printf "Test Begin \n"}{printf $2 "\t" $4 "\n"}END{printf "Test End \n"}' score.txt

輸出結果如下圖所示:

3.5疚沐、FS內(nèi)置變量

可以在BEGIN中通過FS內(nèi)置變量指定分隔符。
FS=':'潮模,表示指定:為分隔符亮蛔。

cat /etc/passwd | grep "/bin/bash"

查看passwd文件中可登陸用戶信息,輸出結果如下圖所示:

指定分隔符按照:分隔沼侣,將結果輸出第一列和第三列豆混,執(zhí)行命令:

cat /etc/passwd | grep "/bin/bash" | awk 'BEGIN{FS=":"} {printf $1 "\t" $3 "\n"}'

命令執(zhí)行結果如下圖所示:

3.6寝殴、關系運算符

篩選出來語文成績大于等于90的同學,輸出其名稱和語文成績芬探。執(zhí)行命令:

cat score.txt | awk '$3>=90{printf $2 "\t" $3 "\n"}'

命令執(zhí)行結果,如下圖所示:

說明:awk命令還有其他的功能厘惦,其功能非常強大偷仿。專門有書籍介紹awk命令,有興趣的可以自行摸索使用方法绵估。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
禁止轉載炎疆,如需轉載請通過簡信或評論聯(lián)系作者。
  • 序言:七十年代末国裳,一起剝皮案震驚了整個濱河市形入,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌缝左,老刑警劉巖亿遂,帶你破解...
    沈念sama閱讀 211,496評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件浓若,死亡現(xiàn)場離奇詭異,居然都是意外死亡蛇数,警方通過查閱死者的電腦和手機挪钓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,187評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來耳舅,“玉大人碌上,你說我怎么就攤上這事∑只玻” “怎么了馏予?”我有些...
    開封第一講書人閱讀 157,091評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長盔性。 經(jīng)常有香客問我霞丧,道長,這世上最難降的妖魔是什么冕香? 我笑而不...
    開封第一講書人閱讀 56,458評論 1 283
  • 正文 為了忘掉前任蛹尝,我火速辦了婚禮,結果婚禮上悉尾,老公的妹妹穿的比我還像新娘突那。我一直安慰自己,他們只是感情好焕襟,可當我...
    茶點故事閱讀 65,542評論 6 385
  • 文/花漫 我一把揭開白布陨收。 她就那樣靜靜地躺著,像睡著了一般鸵赖。 火紅的嫁衣襯著肌膚如雪务漩。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,802評論 1 290
  • 那天它褪,我揣著相機與錄音饵骨,去河邊找鬼。 笑死茫打,一個胖子當著我的面吹牛居触,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播老赤,決...
    沈念sama閱讀 38,945評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼轮洋,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了抬旺?” 一聲冷哼從身側響起弊予,我...
    開封第一講書人閱讀 37,709評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎开财,沒想到半個月后汉柒,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體误褪,經(jīng)...
    沈念sama閱讀 44,158評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,502評論 2 327
  • 正文 我和宋清朗相戀三年碾褂,在試婚紗的時候發(fā)現(xiàn)自己被綠了兽间。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,637評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡正塌,死狀恐怖嘀略,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情传货,我是刑警寧澤屎鳍,帶...
    沈念sama閱讀 34,300評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站问裕,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏孵坚。R本人自食惡果不足惜粮宛,卻給世界環(huán)境...
    茶點故事閱讀 39,911評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望卖宠。 院中可真熱鬧巍杈,春花似錦、人聲如沸扛伍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,744評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽刺洒。三九已至鳖宾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間逆航,已是汗流浹背鼎文。 一陣腳步聲響...
    開封第一講書人閱讀 31,982評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留因俐,地道東北人拇惋。 一個月前我還...
    沈念sama閱讀 46,344評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像抹剩,于是被迫代替她去往敵國和親撑帖。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,500評論 2 348

推薦閱讀更多精彩內(nèi)容