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:) 如果只是對字符串的排序 ...
一周排行