第十九節(jié)課操作系統(tǒng)awk命令

  1. 課程知識(shí)回顧(提問環(huán)節(jié))

    1. sed命令作用了解
      語(yǔ)法: sed [參數(shù)] '條件 指令' 文件信息
    2. sed命令實(shí)際應(yīng)用
      查詢數(shù)據(jù)信息 sed -n '/查詢信息/p' 文件信息
      添加數(shù)據(jù)信息 sed -i.bak '條件信息 i/a 添加的內(nèi)容' 文件信息
      刪除數(shù)據(jù)信息 sed -ri.bak '/條件01|條件02/d' 文件信息
      替換數(shù)據(jù)信息 sed -i.bak 's#要替換的信息#替換成什么信息#g' 文件信息
      sed -ri.bak 's#要替換的信息(保留信息)#替換成什么信息\1#g' 文件信息
      sed -i.bak 's#正則匹配信息#&#g' 文件信息
      sed -i.bak '3c oldboy' 文件信息
    3. sed命令測(cè)驗(yàn)練習(xí)
      1. 利用sed命令取出IP地址
      2. 利用sed命令批量創(chuàng)建用戶
      3. 利用sed命令取出文件權(quán)限
      4. 利用sed命令批量修改文件擴(kuò)展名
      5. 利用sed命令編寫腳本
        修改服務(wù)器IP地址信息腳本 sh change_ip.sh
  2. 三劍客命令awk概述
    gawk : pattern scanning and processing language
    可以進(jìn)行模式掃描 和 是一門語(yǔ)言
    語(yǔ)法 : awk [參數(shù)] '模式{動(dòng)作}' 文件
    sed [參數(shù)] '條件 指令' 文件信息
    原理 :

  3. 三劍客命令awk作用
    處理文件信息: 文本文件信息 日志文件信息 配置文件信息
    處理文件方式: 排除信息 查詢信息 統(tǒng)計(jì)信息 替換信息
    對(duì)文件列進(jìn)行處理

  4. 三劍客命令awk操作
    創(chuàng)建測(cè)試環(huán)境
    [root@oldboyedu ~]# cat reg.txt
    Zhang Dandan 41117397 :250:100:175
    Zhang Xiaoyu 390320151 :155:90:201
    Meng Feixue 80042789 :250:60:50
    Wu Waiwai 70271111 :250:80:75
    Liu Bingbing 41117483 :250:100:175
    Wang Xiaoai 3515064655 :50 :95 :135
    Zi Gege 1986787350 :250:168:200
    Li Youjiu 918391635 :175:75:300
    Lao Nanhai 918391635 :250:100:175

    1. 顯示xiaoyu的姓氏和ID號(hào)碼
      awk '{print 13}' 文件信息
      第一個(gè)步驟: 找出需要編寫模式信息
      獲取xiaoyu信息
      awk '/Xiaoyu/' reg.txt
      awk '2~/Xiaoyu/' reg.txt 第二個(gè)步驟: 根據(jù)條件做處理 顯示滿足條件的第三列和第一列信息 awk '2~/Xiaoyu/{動(dòng)作}' reg.txt
      awk '2~/Xiaoyu/{print1 3}' reg.txt 答案: [root@oldboyedu ~]# awk '2~/Xiaoyu/{print 1,3}' reg.txt
      Zhang 390320151
      [root@oldboyedu ~]# awk '2~/Xiaoyu/{print1" "$3}' reg.txt
      Zhang 390320151

    2. 姓氏是Zhang的人,顯示他的第二次捐款金額及他的名字
      第一個(gè)步驟: 找出需要編寫模式信息
      awk '1~/Zhang/' reg.txt 第二個(gè)步驟: 根據(jù)條件做處理 awk '1~/Zhang/{print 1,2,4}' reg.txt awk -F ":" '1~/Zhang/{print 3}' reg.txt 答案: [root@oldboyedu ~]# awk -F "[: ]+" '1~/Zhang/{print 1,2,$5}' reg.txt
      Zhang Dandan 100
      Zhang Xiaoyu 90

    3. 顯示所有以41開頭的ID號(hào)碼的人的全名和ID號(hào)碼
      第一個(gè)步驟: 找出需要編寫模式信息
      awk '3~/^41/' reg.txt 第二個(gè)步驟: 根據(jù)條件做處理 答案: awk '3~/^41/{print 1,2,3}' reg.txt [root@oldboyedu ~]# awk '3~/^41/{print 1,2,3}' reg.txt Zhang Dandan 41117397 Liu Bingbing 41117483 [root@oldboyedu ~]# awk '3~/^41/{print 1,2,$3}' reg.txt|column -t
      Zhang Dandan 41117397
      Liu Bingbing 41117483

    4. 顯示所有ID號(hào)碼最后一位數(shù)字是1或5的人的全名
      第一個(gè)步驟: 找出需要編寫模式信息
      awk '3~/1|5/' reg.txt awk '3~/[15]/' reg.txt awk '3~/(1|5)/' reg.txt 第二個(gè)步驟: 根據(jù)條件做處理 答案 [root@oldboyedu ~]# awk '3~/[15]/{print1,2}' reg.txt|column -t Zhang Xiaoyu Wu Waiwai Wang Xiaoai Li Youjiu Lao Nanhai [root@oldboyedu ~]# awk '3~/[15]/{print1,2,3}' reg.txt|column -t
      Zhang Xiaoyu 390320151
      Wu Waiwai 70271111
      Wang Xiaoai 3515064655
      Li Youjiu 918391635
      Lao Nanhai 918391635

    5. 獲取文件中有井號(hào)或空行的內(nèi)容, 將空行和井號(hào)信息的行排除
      第一個(gè)步驟: 找出需要編寫模式信息
      awk '/#|^/' reg.txt awk '0~/#|^/' reg.txt 說明:0 表示將文件所有列信息進(jìn)行顯示
      awk '0!~/#|^/' reg.txt
      awk '!/#|^/' reg.txt 第二個(gè)步驟: 根據(jù)條件做處理 答案: [root@oldboyedu ~]# awk '0!~/#|^/' reg.txt Zhang Dandan 41117397 :250:100:175 Meng Feixue 80042789 :250:60:50 Wu Waiwai 70271111 :250:80:75 Liu Bingbing 41117483 :250:100:175 Zi Gege 1986787350 :250:168:200 Li Youjiu 918391635 :175:75:300 Lao Nanhai 918391635 :250:100:175 Lao Nanhai Xiaoyu :250:100:175 [root@oldboyedu ~]# awk '0!~/#|^/{print0}' reg.txt
      Zhang Dandan 41117397 :250:100:175
      Meng Feixue 80042789 :250:60:50
      Wu Waiwai 70271111 :250:80:75
      Liu Bingbing 41117483 :250:100:175
      Zi Gege 1986787350 :250:168:200
      Li Youjiu 918391635 :175:75:300
      Lao Nanhai 918391635 :250:100:175
      Lao Nanhai Xiaoyu :250:100:175

    6. 顯示Xiaoyu的捐款,每個(gè)捐款數(shù)額都是以開頭, 如110220330
      awk '2~/Xiaoyu/{print4}' reg.txt|sed 's#:##g' awk '2~/Xiaoyu/{print 4}' reg.txt|tr ':' ''
      awk -F "[: ]+" '2~/Xiaoyu/{print ""4,""5,""$6}' reg.txt

      awk替換
      gsub = gawk substitute
      gsub(/要替換的信息/,"替換成什么".將第幾列) [root@oldboyedu ~]# awk '2~/Xiaoyu/{gsub(/:/,"",NF);print NF}' reg.txt15590201
      說明: $NF 表示文件的最后一列信息

  5. awk命令模式分類
    普通模式: 比較行信息
    [root@oldboyedu ~]# cat reg.txt
    Zhang Dandan 41117397 :250:100:175
    Zhang Xiaoyu 390320151 :155:90:201
    Meng Feixue 80042789 :250:60:50
    Wu Waiwai 70271111 :250:80:75
    Liu Bingbing 41117483 :250:100:175
    Wang Xiaoai 3515064655 :50:95:135
    Zi Gege 1986787350 :250:168:200
    Li Youjiu 918391635 :175:75:300
    Lao Nanhai 918391635 :250:100:175
    [root@oldboyedu ~]# awk 'NR>2' reg.txt
    Meng Feixue 80042789 :250:60:50
    Wu Waiwai 70271111 :250:80:75
    Liu Bingbing 41117483 :250:100:175
    Wang Xiaoai 3515064655 :50:95:135
    Zi Gege 1986787350 :250:168:200
    Li Youjiu 918391635 :175:75:300
    Lao Nanhai 918391635 :250:100:175
    [root@oldboyedu ~]# awk 'NR<2' reg.txt
    Zhang Dandan 41117397 :250:100:175
    說明: NR 表示文件行信息

    取出多行信息
    [root@oldboyedu ~]# awk 'NR==2,NR==4' reg.txt --- 連續(xù)多行
    Zhang Xiaoyu 390320151 :155:90:201
    Meng Feixue 80042789 :250:60:50
    Wu Waiwai 70271111 :250:80:75
    [root@oldboyedu ~]# awk 'NR==2;NR==4' reg.txt --- 不連續(xù)多行
    Zhang Xiaoyu 390320151 :155:90:201
    Wu Waiwai 70271111 :250:80:75

    特殊模式:
    BEGIN{動(dòng)作}: 在處理文件之前,先做什么事情
    [root@oldboyedu ~]# awk 'BEGIN{print "姓","名","號(hào)碼","捐款記錄"}{print $0}' reg.txt|column -t
    姓 名 號(hào)碼 捐款記錄
    Zhang Dandan 41117397 :250:100:175
    Zhang Xiaoyu 390320151 :155:90:201
    Meng Feixue 80042789 :250:60:50
    Wu Waiwai 70271111 :250:80:75
    Liu Bingbing 41117483 :250:100:175
    Wang Xiaoai 3515064655 :50:95:135
    Zi Gege 1986787350 :250:168:200
    Li Youjiu 918391635 :175:75:300
    Lao Nanhai 918391635 :250:100:175

    用于計(jì)算:
    [root@oldboyedu ~]# awk "BEGIN{print 2+2}"
    4
    [root@oldboyedu ~]# awk "BEGIN{print 2-2}"
    0
    [root@oldboyedu ~]# awk "BEGIN{print 22}"
    4
    [root@oldboyedu ~]# awk "BEGIN{print 3/2}"
    1.5
    [root@oldboyedu ~]# awk "BEGIN{print 3^2}"
    9
    [root@oldboyedu ~]# awk "BEGIN{print 3^3}"
    27
    [root@oldboyedu ~]# awk "BEGIN{print 3
    *3}"
    27
    [root@oldboyedu ~]# awk "BEGIN{print 5%3}"
    2

    修改內(nèi)置變量:
    NF: 取出最后一列
    # awk '{print (NF-1)}' reg.txt --- 取出倒數(shù)第二列 NR: 表示行信息 FS: 指定列分隔符, 默認(rèn)識(shí)別空格為分割符 [root@oldboyedu ~]# awk 'BEGIN{FS="[: ]+"}{print4}' reg.txt
    250
    155
    250
    250
    250
    50
    250
    175
    250
    [root@oldboyedu ~]# awk -vFS="[: ]+" '{print 1,4}' reg.txt
    Zhang 250
    Zhang 155
    Meng 250
    Wu 250
    Liu 250
    Wang 50
    Zi 250
    Li 175
    Lao 250

    END{動(dòng)作}: 在處理文件之后,再做什么事情
    [root@oldboyedu ~]# awk 'BEGIN{print "姓","名","號(hào)碼","捐款記錄"}{print $0}END{print "學(xué)生捐款登記表"}' reg.txt|column -t
    姓 名 號(hào)碼 捐款記錄
    Zhang Dandan 41117397 :250:100:175
    Zhang Xiaoyu 390320151 :155:90:201
    Meng Feixue 80042789 :250:60:50
    Wu Waiwai 70271111 :250:80:75
    Liu Bingbing 41117483 :250:100:175
    Wang Xiaoai 3515064655 :50:95:135
    Zi Gege 1986787350 :250:168:200
    Li Youjiu 918391635 :175:75:300
    Lao Nanhai 918391635 :250:100:175
    學(xué)生捐款登記表

    實(shí)際作用:
    可以將統(tǒng)計(jì)后的最終結(jié)果進(jìn)行輸出

  6. awk對(duì)文件進(jìn)行統(tǒng)計(jì)分析

    1. awk統(tǒng)計(jì)運(yùn)算公式
      a 文本信息累加運(yùn)算
      i=i+1
      統(tǒng)計(jì)文件行數(shù)
      awk '{i=i+1}END{print i}' test.txt

    [root@oldboyedu ~]# awk '/oldboy/{i=i+1}END{print i}' test.txt
    4
    [root@oldboyedu ~]# awk '/oldboy/{i++}END{print i}' test.txt
    4
    b 數(shù)值信息求和運(yùn)算
    sum=sum+nn 你要對(duì)文件第幾列信息做求和運(yùn)算

    seq 10|awk '{sum=sum+$1}END{print sum}'

    55

    找出有faild信息, 總共出現(xiàn)了多少次 (awk統(tǒng)計(jì))
    難點(diǎn): windows文件如何傳輸?shù)絣inux系統(tǒng)
    yum install -y lrzsz --- 實(shí)現(xiàn)windows和linux系統(tǒng)之間數(shù)據(jù)傳輸
    rz -- 將windows數(shù)據(jù) ---> linux系統(tǒng)
    sz -- 將linux數(shù)據(jù) ---> windows系統(tǒng)

    awk '/Failed/{i++}END{print i}' secure-20161219
    awk '$6~/Failed/{i++}END{print i}' secure-20161219'

  7. 課程知識(shí)梳理:

    1. awk命令概念介紹: 語(yǔ)法 原理 BEGIN 處理文件 END
    2. awk命令操作說明: 作用 查詢 排除 替換
      參數(shù):
      -F : 指定列分割符號(hào)
      -v : 指定變量信息
      動(dòng)作:
      print : 輸出指定信息
      gsub : 替換指定信息
      符號(hào):
      ~ : 匹配信息 按照指定列進(jìn)行匹配
      !~ : 將匹配的信息取反
      // : 指定匹配信息
    3. awk命令模式分類
      BEGIN{}: 處理文件前, 執(zhí)行什么動(dòng)作
      END{}: 處理文件后, 執(zhí)行什么動(dòng)作
      內(nèi)置變量: FS NF NR --$0
    4. awk命令實(shí)現(xiàn)運(yùn)算功能
      累加公式: i=i+1 i++
      求和運(yùn)算: sum=sum+$n
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末码秉,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子涝缝,更是在濱河造成了極大的恐慌旋廷,老刑警劉巖辈毯,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡站玄,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門濒旦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來株旷,“玉大人,你說我怎么就攤上這事尔邓×榔剩” “怎么了?”我有些...
    開封第一講書人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵梯嗽,是天一觀的道長(zhǎng)齿尽。 經(jīng)常有香客問我,道長(zhǎng)灯节,這世上最難降的妖魔是什么循头? 我笑而不...
    開封第一講書人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任绵估,我火速辦了婚禮,結(jié)果婚禮上贷岸,老公的妹妹穿的比我還像新娘壹士。我一直安慰自己,他們只是感情好偿警,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開白布躏救。 她就那樣靜靜地躺著,像睡著了一般螟蒸。 火紅的嫁衣襯著肌膚如雪盒使。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,462評(píng)論 1 302
  • 那天七嫌,我揣著相機(jī)與錄音少办,去河邊找鬼。 笑死诵原,一個(gè)胖子當(dāng)著我的面吹牛英妓,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播绍赛,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蔓纠,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了吗蚌?” 一聲冷哼從身側(cè)響起腿倚,我...
    開封第一講書人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蚯妇,沒想到半個(gè)月后敷燎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡箩言,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年硬贯,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片陨收。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡澄成,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出畏吓,到底是詐尸還是另有隱情墨状,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布菲饼,位于F島的核電站肾砂,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏宏悦。R本人自食惡果不足惜镐确,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一包吝、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧源葫,春花似錦诗越、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至荣堰,卻和暖如春床未,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背振坚。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工薇搁, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人渡八。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓啃洋,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親屎鳍。 傳聞我的和親對(duì)象是個(gè)殘疾皇子裂允,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

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

  • grep sed awk 過濾相同內(nèi)容grep[root@yuyingqian ~]# grep 'oldb.y'...
    loginnnnnn閱讀 177評(píng)論 0 0
  • 1. awk三劍客命令概述 # which awk--------查看awk在哪個(gè)目錄下 顯示: /u...
    男子瀚閱讀 270評(píng)論 0 0
  • 1. 課程知識(shí)回顧(提問環(huán)節(jié)) 通配符號(hào) * {}通配符號(hào)主要用于匹配文件名稱正則符號(hào)正則符號(hào)主要用于匹配文件內(nèi)...
    威士忌酸WhiskySour閱讀 469評(píng)論 0 0
  • 轉(zhuǎn)載 原文的排版和內(nèi)容都更加友好,并且詳細(xì),我只是在這里貼出了一部分留作自己以后參考和學(xué)習(xí),如希望更詳細(xì)了解AWK...
    XKirk閱讀 3,214評(píng)論 2 25
  • 一、三劍客實(shí)例講解 環(huán)境 [root@oldboyedu ~]# cat oldgirl.txt I am old...
    開忌閱讀 368評(píng)論 0 0