Файл сортування оболонки Linux відповідно до другого стовпця?


Відповіді:


153

Якщо це UNIX:

sort -k 2 file.txt

Ви можете використовувати кілька -kпрапорів для сортування за кількома стовпцями. Наприклад, щоб відсортувати за прізвищем, а потім за прізвищем:

sort -k 2,2 -k 1,1 file.txt

Відповідні варіанти від "сортування за людиною":

-k, --key = POS1 [, POS2]

запустити ключ на POS1, закінчити на POS2 (початок 1)

POS - це F [.C] [OPTS], де F - номер поля, а C - позиція символу в полі. OPTS - це один або кілька варіантів замовлення на одну букву, які замінюють загальні варіанти замовлення для цього ключа. Якщо ключ не вказаний, використовуйте весь рядок як ключ.

-t, --field-separator = SEP

використовуйте SEP замість непустого до порожнього переходу


2
Просто будьте трохи обережні, --field-separator=','якщо у вас є оператор введення даних, який вводить значення для "Ім'я", наприклад "Біллі Боб", або що завгодно ... пробіли можуть легко потрапити у ваші дані, якщо ви не захищаєтесь від цього, але коми відносно малоймовірні.
Тоні Делрой,

1
Є дуже ймовірні випадки коми у цих полях, наприклад "Сміт-молодший". або "Макдауелл-старший" або "Доктор Джон" або "Нью-Йорк, Нью-Йорк"
jbnunn

2
Зверніть увагу, що якщо стовпці візуально вирівняні, тобто між кожними полями не є постійною кількістю пробілів, ви повинні використовувати -bопцію. Це тому sort, що насправді враховуючи, що рядок для сортування починається відразу після коми, а не з першої літери стовпця. Крім того, вам може знадобитися префікс команди LC_ALL=C, щоб уникнути будь-яких побічних ефектів через локаль, які можуть трапитися навіть у простому файлі ASCII.
calandoa

@calandoa Дякую за участь у -b( --ignore-leading-blanks). Щоб трохи уточнити: echo -e 'aa<SPACE>a\na<SPACE><SPACE>b' | sort -k2дає a<SPACE><SPACE>bперший (другий стовпець починається після першого non-blank to blank transition, і <SPACE><SPACE>bце раніше <SPACE>a), але разом з -bним дає, aa<SPACE>aяк очікувалося ( aє раніше b).
Кирило Булигін

7

Щоб сортувати лише за другим полем (отже, там, де збігаються другі поля, ці рядки із збігами залишаються в тому порядку, в якому вони є в оригіналі, без сортування за іншими полями):

sort -k 2,2 -s orig_file > sorted_file

3

FWIW, ось метод сортування, який показує, які процеси використовують найбільше віртуальної пам'яті.

memstat | sort -k 1 -t':' -g -r | less

Параметри сортування встановлюються в перший стовпець, використовуючи: як розділювач стовпців, числове сортування та сортування в зворотному порядку.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.