Почему сортировка по умолчанию дает разные результаты с одинаковым началом строки? [дубликат]

Вы можете взглянуть на исходный код реализации nohup, например, GNU coreutils версии. Там куча настроек, некоторые из них для интернационализации, остальные для обработки различных опций перенаправления; затем происходит собственно "nohupping":

  signal (SIGHUP, SIG_IGN);

  char **cmd = argv + optind;
  execvp (*cmd, cmd);

Как вы догадываетесь, это настраивает процесс на игнорирование сигнала HUP, затем выполняетзапрашиваемую команду.

2
21.05.2018, 20:02
1 ответ

La ​​ordenación sigue las reglas de intercalación, que se seleccionan mediante LC _COLLATE configuración regional (o LC _ALL si está configurado, recurriendo a LANG cuando ambos no están configurados ). La razón detrás de esto es obvia -diferentes idiomas tienen diferentes reglas para el orden alfabético.

Aparentemente, la colación del idioma de su elección omite los "-"s.

$ LC_COLLATE=en_DK sort file2
"(0, 0)": "(0.581223595766+0.883221459338j)", 
"(0, -1)": "(0.0296256019162+0.632637319226j)", 
"(0, -10)": "(0.792520325166+0.141433946136j)", 
"(0, 10)": "(-1.20153329399-0.805695804956j)", 
"(0, 1)": "(0.285821897179-0.508323457505j)", 
"(0, 11)": "(0.0402120404586-1.57660120897j)", 
"(0, -11)": "(0.476001913928+0.127280670816j)", 
"(0, 12)": "(-0.257439911355-1.2545061217j)", 

$ LC_COLLATE=C sort file2
"(0, -1)": "(0.0296256019162+0.632637319226j)", 
"(0, -10)": "(0.792520325166+0.141433946136j)", 
"(0, -11)": "(0.476001913928+0.127280670816j)", 
"(0, 0)": "(0.581223595766+0.883221459338j)", 
"(0, 1)": "(0.285821897179-0.508323457505j)", 
"(0, 10)": "(-1.20153329399-0.805695804956j)", 
"(0, 11)": "(0.0402120404586-1.57660120897j)", 
"(0, 12)": "(-0.257439911355-1.2545061217j)", 
3
27.01.2020, 22:02

Теги

Похожие вопросы