diff --git a/src/uu/sort/src/sort.rs b/src/uu/sort/src/sort.rs index 0d0f97f591e..491845215ca 100644 --- a/src/uu/sort/src/sort.rs +++ b/src/uu/sort/src/sort.rs @@ -2799,7 +2799,14 @@ fn compare_by<'a>( { Ordering::Equal } else { - a.line.cmp(b.line) + #[cfg(feature = "i18n-collator")] + { + locale_cmp(a.line, b.line) + } + #[cfg(not(feature = "i18n-collator"))] + { + a.line.cmp(b.line) + } }; if global_settings.reverse { diff --git a/tests/by-util/test_sort.rs b/tests/by-util/test_sort.rs index 74b1e377ef9..8bd802d582a 100644 --- a/tests/by-util/test_sort.rs +++ b/tests/by-util/test_sort.rs @@ -303,6 +303,16 @@ fn test_numeric_with_trailing_invalid_chars() { ); } +#[test] +fn test_numeric_with_trailing_chars_and_same_number() { + new_ucmd!() + .env("LC_ALL", "en_US.UTF-8") + .arg("-n") + .pipe_in("1 x\n1 ./b\n1 a\n") + .succeeds() + .stdout_is("1 a\n1 ./b\n1 x\n"); +} + #[test] fn test_numeric_sort_rejects_leading_plus_sign() { // GNU sort -n does not treat '+' as a number sign; lines sort lexicographically.