awk之數組排序(省略 sort)

cat file 
a
b
a
c
e
e
a
b
e

要求統計文中字母出現的次數,並按次數降序輸出:
  1. awk '{a[$1]++}END{for(i in a)print i,a[i]}' file | sort -k2nr
  2. a 3
  3. e 3
  4. b 2
  5. c 1




文本的關鍵是如何省略掉管道和sort排序:
  1. awk '{a[++b[$1]]}END{for(i=length(a);i>0;i--)for(j in b)if(b[j]==i)print j,b[j]}' file
[解析]
首先統計字母出現的次數,最後在 END 中利用 asort 對數組a的值進行排序,並把排序結果保存到數組b中。然後開始降序輸出用 b[n] 的值判斷是否與 a[i] 的值相等,相等就列印出下標和其對應的值,然後從數組a中刪除該下標,以免以後的循環再匹配到該下表的值。要是從小到大輸出只須更改for循環即可。

更多相關文章
  • php有內置函數可以對一維數組進行排序,二維數組需要自己定義, 前序:先複習下php中一維數組排序 1.sort  對數組的值按照升序排列(rsort降序),不保留原始的鍵   ksort 對數組的鍵按照升序排列(krsort降序) 保留鍵值關系   asort 對數組的值按照升序排列(arsort ...
  • PHP 數組排序 數組中的元素可以按字母或數字順序進行降序或升序排列. PHP - 數組排序函數 在本章中,我們將一一介紹下列 PHP 數組排序函數: sort() - 對數組進行升序排列 rsort() - 對數組進行降序排列 asort() - 根據關聯數組的值,對數組進行升序排列 ksort( ...
  • ⼀.字典類⼀個key-value對認爲是⼀個條⺫(Entry),字典是存儲key-value 對的容器.與數組不同,字典靠key存取元素.key不能重複,value可以.鍵值對在字典中是⽆序存儲的.不可變字典, 字典⼀旦創建,鍵值對就不可更改, 僅能讀取
  • 一維數組排序可以使用asort.ksort等一些方法進程排序,相對來說比較簡單.二維數組的排序怎麽實現呢?使用array_multisort和usort可以實現. 例如像下面的數組: 代碼如下: $users = array(     array('name' => 'tom', 'age' ...
  • 大體上,OC中常用的數組排序有以下幾種方法:sortedArrayUsingSelector:;sortedArrayUsingComparator:;sortedArrayUsingDescriptors:. 1.簡單排序(sortedArrayUsingSelector:) 如果只是對字符串的排 ...
  •    每個排序算法都適應于一種特定的數組情況,堆排序也不例外.普通的堆排序根據大堆小堆對數組排序,下面我們把大堆小堆抽象成一個大小堆,然後對數組排序.大堆的情況下,堆頂存放的是最大值,最後的排序情況就是從小到大.本文,就從從小到大的排序說起,建立編程.   代碼如下:#include "s ...
  • 返回:賀老師課程教學鏈接[專案2-動態數組排序]編一個程序,輸入某班某門課的成績,進行排序後輸出.成績可能爲小數.班級人數不定,要求采用動態數組完成.在下面代碼基礎上完成#include<stdio.h> #include<malloc.h> int main() { int ...
  • Objective C中數組排序幾種情況的總結
    大體上,OC中常用的數組排序有以下幾種方法:sortedArrayUsingSelector:;sortedArrayUsingComparator:;sortedArrayUsingDescriptors: 1.簡單排序(sortedArrayUsingSelector:) 如果只是對字符串的排序 ...
一周排行
  • Mac遠程控制Mac和Windows
     一. Mac控制MacMac間的遠程控制是非常方便的,10.5以後的系統中都集成了VNC ...
  • Ubuntu Android開發環境搭建 相關設置
    注:此方法同樣適用于Windows 7測試通過:ubuntu 12.04 32bit , ...
  • Spark 數據挖掘平台介紹  - Spark 1.1.0
      一:Spark      Spark已正式申請加入Apache孵化器,從靈機一閃的實驗 ...
  •   birt報表部署方式有兩種,一種是通過官方提供的WebViewerExample webapp去部署另一種是通過ReportEngine API自行開發部署程序:采用第一種的好處是不需要編寫額外的代碼,直接就能部 ...
  • Java代碼 Notification n = new Notification(R.drawable.face_1, "Service啓動", System.currentTimeMillis( ...
  •       因爲yum源的最新版本是1.7.x,所以無法通過yum進行更新,下面描述如何通過編譯源碼進行安裝1.安裝需要的依賴    第一步我們需要做的就是確認系統已經安裝了編譯git時需要的依賴.使用下面的安裝命令 ...
  • 分布式消息系統Jafka入門指南 一.JafkaMQ簡介 JafkaMQ是一個分布式的發布/訂閱消息系統,它是Apache Kafka的Java移植版. 2013年11月28日,JafkaMQ發布了1.2.3版. J ...
  •   ATS是一個高效能的.模塊的HTTP代理和緩存伺服器,後來被雅虎收購,一直在雅虎內部使用,後來被雅虎開源把代碼貢獻給了apache基金會.ATS可以承擔ISP級別的代理緩存服務,很強大,准備些一個系列,慢慢探索A ...
  • 前言,一個好的前端必然要懂一門後端,同樣也要懂設計!php就是我們最好的選擇,入門快,開發快,很多集成好的環境,手冊好讀,可以最大限度的讓我們去操作js與後端的交互實現,了解cookie,ajax等,同樣在寫靜態結構 ...
  • 錄屏軟件選用的是wink,非常好用選擇動作捕獲,時間捕獲造成文件太大沒必要,而且即便是動作捕獲,我選擇的也是自己按Pause鍵手動捕獲然後做成swf和exe兩種格式發布.