2015-04-01 65 views
0

我有一箇舊腳本,其中包含sort +0 -1的變體,但我係統中的man sort甚至沒有提及這些選項的存在。`sort +0 -1`做什麼?

another question,我被帶到the Wikipedia page for sort,它說:

在舊版本的排序中,+1選項排序使用數據的第二列(+2第三等)製作的節目。這已被棄用,而-k選項可用於執行相同的操作。

但它沒有提到什麼負面的論點,如-1應該做的。

需要注意的是,在我的 「現代」 之類的(GNU的coreutils 8.21),sort +0 -1作品,而所有以下的失敗:
sort +0 +1sort -0 -1sort -0 +1

我甚至可以添加數字對(例如sort +0 -1 +2,sort +0 -1 +2 -3),但是從一個簡短的測試用例中,我無法準確地推斷出它們的含義。

編輯:爲了完整性,現在一個無效命令如sort +0 +1相當於sort -k1 -k2

+1

什麼平臺,什麼版本的'sort'? – mklement0 2015-04-01 14:38:35

+0

我想這意味着要麼從最後索引列(或者我認爲這更可能)反向排序該編號列。但這完全是猜測。 – 2015-04-01 14:39:50

回答

4

具體根據GNU info頁上sort

在較早的系統中,「排序」支持一個過時的原點零語法 「+ POS1 [-POS2]」用於指定排序關鍵字。如果Y爲'0'或不存在,則過時序列'sort + AX -B.Y'相當於'sort -k A + 1.X + 1,B',否則等同於'sort -k A + 1.X + 1,B + 1.Y」。

因此,在新系統中,sort +0 -1相當於sort -k 1,1

+0

事實上,我在第5頁之後就停止了查找,並且嘗試正則表達式搜索「+」並不是很明顯。 – anol 2015-04-01 14:46:28

1

爲了配合馬克·B的回答:

This GNU coreutils page解釋如何模擬的sort舊的行爲,通過定義此環境變量:

_POSIX2_VERSION=199209 

有了這個變量,因爲他們沒有命令,如sort +0 +1的行爲在較舊的系統上,避免修改腳本(並可能引入錯誤)。