Короткий ответ: синтаксис, который вы используете для сортировки, взят из старой версии POSIX. Из руководства coreutils для sort:
On systems not conforming to POSIX 1003.1-2001, sort supports a traditional origin-zero syntax ‘+pos1 [-pos2]’ for specifying sort keys. The traditional command ‘sort +a.x -b.y’ is equivalent to ‘sort -k a+1.x+1,b’ if y is ‘0’ or absent, otherwise it is equivalent to ‘sort -k a+1.x+1,b+1.y’.
This traditional behavior can be controlled with the _POSIX2_VERSION environment variable (see Standards conformance); it can also be enabled when POSIXLY_CORRECT is not set by using the traditional syntax with ‘-pos2’ present.
Scripts intended for use on standard hosts should avoid traditional syntax and should use -k instead.
Хотя можно восстановить традиционное поведение, проще использовать новый синтаксис.
Опция +1
определяет ключ сортировки от второго поля до конца строки. Эквивалентная новая опция -k 2
. Таким образом, новые команды sort
, которые вы должны использовать, соответственно:
sort -k 2 -t: ~/source/corp_phones
sort -k 7 -t: ~/source/corp_phones
sort -k 5 -t: ~/source/corp_phones