Subject: bug#76290: "sort -u" vs "sort -h -u": possible bug

From: Rupert Gallagher <[email-masked]>
Date: Sun, 16 Feb 2025 11:02:37 +0000

My concern is best described as follows.

~ $ echo -e "CVE-2018-13787\nCVE-2019-16649\nCVE-2019-16650\nCVE-2020-15046\nCVE-2018-13787" | sort -h
CVE-2018-13787
CVE-2018-13787
CVE-2019-16649
CVE-2019-16650
CVE-2020-15046

~ $ echo -e "CVE-2018-13787\nCVE-2019-16649\nCVE-2019-16650\nCVE-2020-15046\nCVE-2018-13787" | sort -h -u
CVE-2018-13787

The introduction of the unique operator (-u) returns a wrong answer when used with the human sorting operator (-h).

Note the problem does not occur when the human sorting operator is not used.

~ $ echo -e "CVE-2018-13787\nCVE-2019-16649\nCVE-2019-16650\nCVE-2020-15046\nCVE-2018-13787" | sort
CVE-2018-13787
CVE-2018-13787
CVE-2019-16649
CVE-2019-16650
CVE-2020-15046

~ $ echo -e "CVE-2018-13787\nCVE-2019-16649\nCVE-2019-16650\nCVE-2020-15046\nCVE-2018-13787" | sort -u
CVE-2018-13787
CVE-2019-16649
CVE-2019-16650
CVE-2020-15046

The example suggests the existence of a programming error between the output of -h and the input of -u.

-------- Original Message --------
On 2/16/25 07:23, Paul Eggert wrote:

>  I don't see a bug there, just an infelicity. -h means 'sort' should look for a number, and your data lines don't start with numbers.
>  
>  Try 'sort --debug -h -u' to see more.
>