Shell Script - String List - sort

原始討論

原始討論「回覆: shell中 `` 與()問題請教」。

回覆內容

真的要來談sort了,

請先執行「$ man sort」,

可以找到下面的文字


...略...

NAME

       sort - sort lines of text files

...略...

這裡要注意的是「sort lines」。

先準備剛剛有使用過的兩個檔案

一個檔,命名叫「one_line.txt」,內容如下,只有單純的一行

Jan Feb Mar Apr Jun Jul Aug

另一個檔,命名叫「list.txt」,內容如下,

Jan
Feb
Mar
Apr
Jun
Jul
Aug

接下來看範例

範例一

#!/usr/bin/env bash

sort list.txt

顯示

Apr
Aug
Feb
Jan
Jul
Jun
Mar

範例二

#!/usr/bin/env bash

sort one_line.txt

顯示

Jan Feb Mar Apr Jun Jul Aug

因為「one_line.txt」只有一行,還記得上面提到的「sort - sort lines of text files」。

範例三

#!/usr/bin/env bash

LIST='Jan Feb Mar Apr Jun Jul Aug'

echo $LIST | sort

顯示

Jan Feb Mar Apr Jun Jul Aug

這裡一樣顯示只有一行,同「範例二」。

範例四

#!/usr/bin/env bash

LIST='Jan Feb Mar Apr Jun Jul Aug'

printf "%s\n" $LIST | sort

顯示

Apr
Aug
Feb
Jan
Jul
Jun
Mar

還記得上一個回覆提到的「printf」的用法嗎?

「範例四」將「範例三」改用「printf」,將「一行」轉成「多行」,再拋給「sort」去處理排序。

注意:以上討論的用法,都還是在「String」的範疇喔,下面開始才是要討論「Array」。