Сортувати за словами, розділеними комами


11

Звичайна команда: сортування може сортувати рядки на основі стовпця або віртуального стовпця ( \%cабо \%v), чи може логічний стовпчик вищого рівня використовуватись як ключ сортування? Використання регулярного вираження виглядає трохи складним для цього сценарію (стовпець знаходиться в кінці рядка?), І він схожий на те, що робить утиліта сортування ( sork -k), але сортування з цією функціональністю недоступне для Windows. Також допоможе плагін Vim.

Наприклад, я б хотів сортувати 2 рядки нижче відповідно до останнього стовпця, розділеного комою. Мій реальний сценарій має набагато більше стовпців та рядкових рядків. Вказати роздільник стовпця значно спростить його.

xxx,yyy,zzz,0x123
zzxz,xxxx,yyyy,0x121

Відповіді:


11

Сорт Vim дозволяє або пропустити {pattern}, або лише розглянути (із rпрапором). Регулярний вираз для останнього стовпця, розділеного комами, легко сформулювати: пропустити все до та включити останню кому у рядок:

:sort/.*,/

Для будь-якого іншого стовпця я би використовував rпрапор і пропускав N (тут 2:) попередніх стовпців через \zs:

:sort/\([^,]*,\)\{2}\zs[^,]*/

1
Оскільки в останньому стовпці буває шістнадцятковий номер із використанням xпрапора, також може бути корисним.
jecxjo

Це виглядає чудово. Останній стовпець може бути окремим випадком. Будь-яке просте подання для середніх стовпців?
Томсон

Я думав, ти зможеш щось для цього придумати, але ось ти. Прийміть мою (відредаговану) відповідь, натиснувши на неї окреслену галочку. Дякую!
Інго Каркат
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.