2011-10-19 62 views
1

例如,如果我們有一個名爲「VAR」bash腳本:如何以「number.text number.text etc」的形式按升序排列字符串?

一個字符串「2.測試1.test 9.test」

我想變量它是

1.test 2.測試9.test

我試圖將此命令

echo $var | sort -n 

但輸出是不正確的,因爲如果例如我有

2.text 11.text

將打印

11.text 2.text這是錯誤的,因爲11> 2

感謝

+0

應該工作,它適用於我。你有沒有嘗試用'-r'來改變順序? – Griffin

回答

1

sort上線,不再言語作品。

對於您向我們展示的示例,您正排序一行文本。例如:

$ echo 2.text 11.text 3.text | sort -n 
2.text 11.text 3.text 

但是,這與你已經證明我們的輸出不一致的,所以我不能確定你在做正是,或你想要做什麼。

你在找這樣的事嗎?

$ echo 2.text 11.text 3.text | fmt -1 
2.text 
11.text 
3.text 
$ echo 2.text 11.text 3.text | fmt -1 | sort -n 
2.text 
3.text 
11.text 

而且你需要的線路重新組合成一個單一的線?通過fmt -999管道輸出將做到這一點,但這有點難看(GNU coreutils fmt限制寬度爲2500)。

+1

我覺得'paste -s'應該重建後面的單行 – Daenyth

+0

@Daenyth:是的,應該可以工作。添加'-d'''用空格而不是製表符分隔。 –

1

將換行符中的空格轉換爲tr;現在sort;並將換行轉換回空格

echo「2.test 1.test 9.test」| tr「」「\ n」|排序| tr「\ n」「」

ps。看到這個地方在論壇