Unix сортировка для сортировки только одного столбца - PullRequest
2 голосов
/ 25 ноября 2010

У меня есть строка с разделителями табуляции, я хочу отсортировать строки только по первому столбцу.

можно ли это сделать с помощью сортировки Unix?

u.s 2||`` U.S ''||527 || 107
u.s.    2||`` U.S. ''||532 || 107
us. 2||Us.||532 || 112
u.s.    2||U.s.||629 || 112
us. 2||US.||6444 || 112
us  2||US||8655700 || 27
u.s 2||U.s||992 || 112

Должен сортировать, используя

u.s
u.s.
us. 
u.s.
us. 
us  
u.s 

Точки не считаются сортировкой. Вышеуказанная сортируется после использования sort -k1. нас. и нас. не вместе.

Ответы [ 4 ]

2 голосов
/ 25 ноября 2010

Если вы сортируете по первому полю, нет смысла указывать ключ, если вы не хотите игнорировать оставшуюся часть строки.Если вы хотите сделать это, вам нужно сделать -k1,1.Вам нужно будет указать C языковой стандарт (или вы можете использовать синоним POSIX, чтобы не игнорировать точки.

LC_COLLATE=C sort -k1,1 inputfile

или

LC_COLLATE=C sort inputfile
1 голос
/ 25 ноября 2010

Возможно, вам нужно установить локаль для сортировки и установить ее в локаль C:

LANG=C sort -k1 data.file
0 голосов
/ 25 ноября 2010

Мой вид (в Linux) может это сделать. Я не знаю, насколько это портативно. В BASH:

sort -k1 -t$'\t'

-k1 дает идентификатор ключевого столбца (столбцов), -t указывает разделитель полей.

0 голосов
/ 25 ноября 2010

Я полагаю, вы ищете:

sort -k 1 filetosort

Tab является разделителем пробелов, который является разделителем по умолчанию для сортировки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...