Shell 練習 —— 輸出每行和的top10

一、要求

  一個文本,每行兩列,都是數字,輸出每行和的top10。

二、腳本

2.1 隨機數生成腳本

#!/bin/bash

for i in {1..10000}
do
    echo ""$RANDOM" "$RANDOM"" >> num.dat
done

2.2 統計腳本

#!/bin/bash

# 計算每一行兩數之和並將其輸出到新的文件中
cat num.dat|while read line
do
    arr=(`echo $line`)
    val=`expr ${arr[0]} + ${arr[1]}`
    echo $val >> file.dat
done

# 對新數據進行 sort 排序 | uniq -c 去重統計 | 
# sort -nrk 1 按照每個數字的出現次數再次排序 | head -n 10 取前十
cat file.dat | sort | uniq -c | sort -nrk 1 | head -n 10 > res.dat
# 循環讀取排序處理後的數據
cat res.dat|while read line
do
    #echo $line
    # 將每一行中的數據進行數組封裝
    arr=(`echo $line`)
    # 按照格式打印每個數字以及其出現次數
    echo "sum: "${arr[1]}" cnt:"${arr[0]}""
done

三、運行結果

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章