日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

awk学习笔记(10) - 数组

發布時間:2024/9/20 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 awk学习笔记(10) - 数组 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

awk中的數組

awk中的數組跟php中的很像,使用前都不需要聲明,都可以用字符串做下標。

我們創建一個reg.dat文件來記錄用戶選修的課程:

  • Mary?O.S.?Arch.?Discrete?Steve?D.S.?Algorithm?Arch.?
  • Wang?Discrete?Graphics?O.S.?Lisa?Graphics?A.I.?
  • Lily?Discrete?Algorithm?
  • 現在要統計各課程被選的次數,親,怎么辦?

    之前的程序都是用命令行完成的,從這一篇開始,我們學習將程序寫在文件中來調用。

    調用的方式是:

  • awk?-f?awk程序文件?數據文件?
  • 下面創建一個course.awk文件,在里面編寫如下的程序:

  • {for(i=2;i<=NF;i++)?Number[$i]++}?
  • END?{for(course?in?Number)?printf("%10s?%d\n",?course,?Number[course])}?
  • 然后在命令行中調用:

  • awk?-f?course.awk?reg.dat?
  • 輸出結果:

  • ?Discrete?3?
  • ?????D.S.?1?
  • ?????O.S.?2?
  • ????Steve?1?
  • ?????A.I.?1?
  • ?????Lisa?1?
  • ?Graphics?2?
  • ????Arch.?2?
  • Algorithm?2?
  • 解釋一下course.awk中的程序:

    第一行是一個for循環,NF是一行的字段數,Number是一個數組,$i從第2列開始,直到一行最后一列,其實就是循環了一行的所有的課程,我們將課程名作為數組的下標,一旦有重復的課程,就會將Number[$i]加1。

    第二行中的END表示的是在文件處理結束后進行的處理。這一行也有一個for循環,它是用于將Number數組格式化輸出,for(course in Number)會逐個讀取Number中的元素,讀取的下標即course,值為Number[course]。printf完成下標與值的格式化輸出。

    其實在之前的awk學習筆記(6)中介結不排序對數據去重的技巧時已經用到過數組了,只是沒有系統的學習。

    轉載于:https://blog.51cto.com/ustb80/1034692

    總結

    以上是生活随笔為你收集整理的awk学习笔记(10) - 数组的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。