在shell script數字排序 - Linux

Jessica avatar
By Jessica
at 2014-10-03T17:06

Table of Contents

※ 引述《filiaslayers (司馬雲)》之銘言:
: 請問一下,shell下有程式可以排序數字嗎?
: 像是我用read輸入了3 9 11 4存到變數a
: 是否有程式可以幫我排序變數a的數字得到b?

測試...

Linux:kendlee@~> a="23 9 2 54 4 22 67"
Linux:kendlee@~> echo $a
23 9 2 54 4 22 67

所以內容有隨機的數值在裡面。一般要排序可以使用 sort -n 處理,但是
變數內容是一整行無法排序,所以得先變成多行才可以給 sort 處理。所以...

Linux:kendlee@~> echo $a | tr " " "\n"
23
9
2
54
4
22
67

所以看起來有成功變成多行了.... 那可以開始透過 sort -n 處理:

Linux:kendlee@~> echo $a | tr " " "\n" | sort -n
2
4
9
22
23
54
67

那最後要產生一個變數紀錄,用空白隔開的話,那就....

Linux:kendlee@~> b=$(echo $a | tr " " "\n" | sort -n )
Linux:kendlee@~> echo $b
2 4 9 22 23 54 67

提供給你參考。

--
Tags: Linux

All Comments

Mason avatar
By Mason
at 2014-10-05T02:23
用空白隔開的話,再用tr換掉\n就好了XDDDD
Quanna avatar
By Quanna
at 2014-10-05T07:31
不過非常的謝謝你~~
Robert avatar
By Robert
at 2014-10-05T19:24
_sorted=`echo $a|xargs -n1|sort -n`
Liam avatar
By Liam
at 2014-10-08T11:18
xargs 這個方式也妙,好用~
Ivy avatar
By Ivy
at 2014-10-10T01:27
竟然可以用xargs!!感謝分享
Hazel avatar
By Hazel
at 2014-10-11T17:11
推荐文章。

Linux centOS 7使用上的問題

Quintina avatar
By Quintina
at 2014-10-03T16:58
※ 引述《adeath444 (歐斯)》之銘言: : 想問一下, 我是第一次 安裝Linux來用 : 裝的是 linux centOS 7的版本 : 裝完後 明明是安裝中文版的 : 卻有一大半介面都是 英文的 你是說 GUI 桌面環境那個介面嗎?其實有興趣的話是可以鼓勵參與 Gnome 與 Fed ...

Linux centOS 7使用上的問題

Faithe avatar
By Faithe
at 2014-10-03T16:28
想問一下, 我是第一次 安裝Linux來用 裝的是 linux centOS 7的版本 裝完後 明明是安裝中文版的 卻有一大半介面都是 英文的 SDK設定 給我全英文的 找了網路上的,中文化安裝辦法,都是 出現的英文內容 應該是 找不到可用的檔案 有辦法把 SDK中文化嗎? 還是改灌6版的阿~ ...

在shell script數字排序

Rae avatar
By Rae
at 2014-10-03T16:25
請問一下,shell下有程式可以排序數字嗎? 像是我用read輸入了3 9 11 4存到變數a 是否有程式可以幫我排序變數a的數字得到b? - ...

openvpn 無法存取任何server以外的IP

Skylar Davis avatar
By Skylar Davis
at 2014-10-03T13:46
最近試著設定openvpn卻無法得到預期的效果, 測試結果是無法存取主機以外的任何位置(包含使用IP而非domain name), 主機的部分則是正確的連上並可以使用像ssh/ftp之類的服務, 因為希望使用openvpn的時候也能瀏覽網頁, 所以想要麻煩有類似設定經驗的版友幫忙看看設定檔有什麼地方寫 ...

一張網卡多IP的顯示

Ursula avatar
By Ursula
at 2014-10-03T13:19
※ 引述《REIDO (NEET)》之銘言: : 鳥哥有教ifconfig eth0:0 這種可以綁定多IP的方式,不過如果是用 : /etc/sysconfig/network-script/ifcfg-eth0 : 裡面設定 : IPADDR1= : IPADDR2= : 這種, : ifconfig裡面 ...