Странный номер неисправности главной страницы при чтении последовательно / случайно в области mmap

Использование -k1заставит sortиспользовать всю строку в качестве ключа сортировки. Это не то, что вы хотите.

Я предполагаю, что вы хотели бы использовать exи ex2(, найденные в {...}), в качестве ключа. Для этого укажите -k2в качестве поля сортировки.

Это подберет все после первого {и использует это как ключ.

\newacronym{ex}{EX}{Expanded}
^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^
field 1     f2  f3  field 4

\newacronym[a string]{ex2}{EX2}
^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^
field 1               f2   f3

Для только используйте второе поле в качестве ключа (, а не остальную часть строки ), используйте -k2,2.

Тестирование:

$ sort -t '{' -k2,2 file
\newacronym[a string]{ex2}{EX2}
\newacronym{ex}{EX}{Expanded}

Строка по-прежнему выходит в неправильном порядке. Это связано с тем, что ex2}сортируется до того, какex}(}идет после 2в таблице ASCII, а я использую локаль POSIX ).

Повторная попытка, но на этот раз в Ubuntu с локалью en_US.UTF-8(должна работать на любой glibc Linux и в большинстве локалей, кроме локалей Cили POSIX):

$ LC_COLLATE="en_US.UTF-8" sort -t '{' -k2,2 file
\newacronym{ex}{EX}{Expanded}
\newacronym[a string]{ex2}{EX2}

В зависимости от региональных настроек вам может потребоваться добавить бит LC_COLLATE=...или нет.


Обратите внимание, что sort— это отдельная от оболочки bashутилита, которая работает одинаково независимо от оболочки. Таким образом, это не вопрос типа «bash», а просто вопрос sort.

1
10.08.2019, 11:12
0 ответов

Теги

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