awk命令詳解

背景

  • AWK是一種處理文本文件的語言柱衔,是一個強大的文本分析工具

awk的基本用法

文本內(nèi)容:

2 this is a test
3 Are you like awk
This's a test10
There are orange,apple,mongo

  • 用法一:

    awk '{[pattern] action}' {filenames} #行匹配語句 awk 只能用單引號

    示例:awk '{print $1,$4}' log.txt

    2 a
    3 like
    This's
    10 orange,apple,mongo

  • 用法二:

    awk -F #-F相當(dāng)于內(nèi)置變量FS, 指定分割字符

    示例: awk -F, '{print $1,$2}' log.txt

    2 this is a test
    3 Are you like awk
    This's a test
    10 There are orange apple

  • 用法三:

    awk -v #設(shè)置變量

    示例: awk -va=1 '{print $1,$1+a}' log.txt

    2 3
    3 4
    This's 1
    10 11

awk內(nèi)建變量

變量 描述
$n 當(dāng)前記錄的第n個字段悲柱,字段間由FS分隔
$0 完整的輸入記錄
ARGC 命令行參數(shù)的數(shù)目
ARGIND 命令行中當(dāng)前文件的位置(從0開始算)
ARGV 包含命令行參數(shù)的數(shù)組
CONVFMT 數(shù)字轉(zhuǎn)換格式(默認(rèn)值為%.6g)ENVIRON環(huán)境變量關(guān)聯(lián)數(shù)組
ERRNO 最后一個系統(tǒng)錯誤的描述
FIELDWIDTHS 字段寬度列表(用空格鍵分隔)
FILENAME 當(dāng)前文件名
FNR 同NR挽荠, 但相對于當(dāng)前文件
FS 字段分隔符(默認(rèn)是任何空格)
IGNORECASE 如果為真,則進行忽略大小寫的匹配
NF 當(dāng)前記錄中的字段數(shù)
NR 當(dāng)前記錄數(shù)
OFMT 數(shù)字的輸出格式(默認(rèn)值是%.6g)
OFS 輸出字段分隔符(默認(rèn)值是一個空格)
ORS 輸出記錄分隔符(默認(rèn)值是一個換行符)
RLENGTH 由match函數(shù)所匹配的字符串的長度
RS 記錄分隔符(默認(rèn)是一個換行符)
RSTART 由match函數(shù)所匹配的字符串的第一個位置
SUBSEP 數(shù)組下標(biāo)分隔符(默認(rèn)值是/034)

正則表達式

~ 表示模式開始种冬, / /符號中為模式互例。

awk '/re/ ' log.txt
awk '$2 ~ /th/ {print $2,$4}' log.txt

awk腳本

  • BEGIN{這里面放的是執(zhí)行前的語句}
  • END{這里面放的是處理完所有的行后要執(zhí)行的語句}
  • {這里面放的是處理每一行時要執(zhí)行的語句}
#!/bin/awk -f
#運行前
BEGIN { 
      math = 0 
      english = 0 
      computer = 0 
      printf "NAME NO. MATH ENGLISH COMPUTER TOTAL\n" 
      printf "---------------------------------------------\n"
}
#運行中
{ 
      math+=$3 
      english+=$4 
      computer+=$5 
      printf "%-6s %-6s %4d %8d %8d %8d\n", $1, $2, $3,$4,$5, $3+$4+$5
}
#運行后
END { 
      printf "---------------------------------------------\n"   
      printf " TOTAL:%10d %8d %8d \n", math, english, computer 
      printf "AVERAGE:%10.2f %8.2f %8.2f\n", math/NR, english/NR, computer/NR
}

awk使用原理

  • awk每次處理一行字符(通過文件或管道)绑雄,并將這一行賦給內(nèi)部的$0變量,默認(rèn)一行字符以換行符結(jié)束铅鲤。
  • 每行數(shù)據(jù)默認(rèn)被空格分解成字段(通過內(nèi)部定義FS變量來獲取分隔符)划提,每個字段存儲在已經(jīng)編好的變量中,從$1開始邢享,可以多達100個字段鹏往。
  • awk輸出時,逗號會被空格替換驼仪,改空格保存在OFS變量中(輸出字段分隔符)掸犬。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市绪爸,隨后出現(xiàn)的幾起案子湾碎,更是在濱河造成了極大的恐慌,老刑警劉巖奠货,帶你破解...
    沈念sama閱讀 218,640評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件介褥,死亡現(xiàn)場離奇詭異,居然都是意外死亡递惋,警方通過查閱死者的電腦和手機柔滔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來萍虽,“玉大人睛廊,你說我怎么就攤上這事∩急啵” “怎么了超全?”我有些...
    開封第一講書人閱讀 165,011評論 0 355
  • 文/不壞的土叔 我叫張陵咆霜,是天一觀的道長。 經(jīng)常有香客問我嘶朱,道長蛾坯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,755評論 1 294
  • 正文 為了忘掉前任疏遏,我火速辦了婚禮脉课,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘财异。我一直安慰自己倘零,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,774評論 6 392
  • 文/花漫 我一把揭開白布宝当。 她就那樣靜靜地躺著视事,像睡著了一般。 火紅的嫁衣襯著肌膚如雪庆揩。 梳的紋絲不亂的頭發(fā)上俐东,一...
    開封第一講書人閱讀 51,610評論 1 305
  • 那天,我揣著相機與錄音订晌,去河邊找鬼虏辫。 笑死,一個胖子當(dāng)著我的面吹牛锈拨,可吹牛的內(nèi)容都是我干的砌庄。 我是一名探鬼主播,決...
    沈念sama閱讀 40,352評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼奕枢,長吁一口氣:“原來是場噩夢啊……” “哼娄昆!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起缝彬,我...
    開封第一講書人閱讀 39,257評論 0 276
  • 序言:老撾萬榮一對情侶失蹤萌焰,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后谷浅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體扒俯,經(jīng)...
    沈念sama閱讀 45,717評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,894評論 3 336
  • 正文 我和宋清朗相戀三年一疯,在試婚紗的時候發(fā)現(xiàn)自己被綠了撼玄。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,021評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡墩邀,死狀恐怖掌猛,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情眉睹,我是刑警寧澤荔茬,帶...
    沈念sama閱讀 35,735評論 5 346
  • 正文 年R本政府宣布只盹,位于F島的核電站,受9級特大地震影響兔院,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜站削,卻給世界環(huán)境...
    茶點故事閱讀 41,354評論 3 330
  • 文/蒙蒙 一坊萝、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧许起,春花似錦十偶、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至猛频,卻和暖如春狮崩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鹿寻。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評論 1 270
  • 我被黑心中介騙來泰國打工睦柴, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留割粮,地道東北人搜吧。 一個月前我還...
    沈念sama閱讀 48,224評論 3 371
  • 正文 我出身青樓侨拦,卻偏偏與公主長得像踊跟,于是被迫代替她去往敵國和親芥玉。 傳聞我的和親對象是個殘疾皇子萨脑,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,974評論 2 355

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

  • 轉(zhuǎn)載 原文的排版和內(nèi)容都更加友好,并且詳細(xì),我只是在這里貼出了一部分留作自己以后參考和學(xué)習(xí),如希望更詳細(xì)了解AWK...
    XKirk閱讀 3,218評論 2 25
  • linux awk命令詳解 來源:ggjucheng 鏈接:http://www.cnblogs.com/ggju...
    meng_philip123閱讀 860評論 0 1
  • 簡介 awk是一個強大的文本分析工具淮韭,相對于grep的查找裁僧,sed的編輯财搁,awk在其對數(shù)據(jù)分析并生成報告時蘸炸,顯得尤...
    ad085d162310閱讀 1,122評論 0 1
  • awk: grep,sed,awk grep:文本過濾 sed:文本編輯 awk:文本格式化工具; 1 什么是aw...
    木林森閱讀 1,784評論 0 16
  • awk命令的基本使用 [root@shellscript ~]# head -n 3 /etc/passwd | ...
    古寒飛閱讀 1,065評論 0 2