例如,如果我們有一個名爲「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
感謝
例如,如果我們有一個名爲「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
感謝
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)。
我覺得'paste -s'應該重建後面的單行 – Daenyth
@Daenyth:是的,應該可以工作。添加'-d'''用空格而不是製表符分隔。 –
將換行符中的空格轉換爲tr
;現在sort
;並將換行轉換回空格
echo「2.test 1.test 9.test」| tr「」「\ n」|排序| tr「\ n」「」
ps。看到這個地方在論壇
應該工作,它適用於我。你有沒有嘗試用'-r'來改變順序? – Griffin