Вид GNU и вина мерзавца

Сегодня я думал, что делал простую операцию:

git blame file | sort -k 3

Получить все строки file отсортированный по дате, в которую они были в последний раз изменены. К сожалению, это, кажется, не сортирует его правильно. Это действительно работает, если я делаю следующее:

git blame file | cut -c 20- | sort

Который просто взламывает первую часть строки прочь и затем делает вид. Успех этой команды указывает мне на это sort может на самом деле сделать операцию, которую я пробовал. Почему это не работало?

Вот строка в качестве примера от вывода git blame file:

35d8e9eb (username 2007-01-17 03:58:04 +0000 155) Some text on line 155

Править: Используя любое разумное число, кроме того, 3 в исходной командной строке, кажется, хорошо работает - я могу отсортировать по хешу (поле 1), имя пользователя (поле 2), время суток (поле 4) или номер строки (поле 6), но дата (поле 3) не работает - я не могу определить вообще, что приказывает, чтобы это на самом деле закончилось в...

Редактирование 2: я сделал санированный входной файл, который показывает ту же проблему. Вот cleaned.txt:

cb7bb041 (eeeeeee  2010-12-14 19:41:18 +0000  42)
35d8e9eb (cccccccc 2007-01-17 03:58:04 +0000 135)
d7377fa9 (hhhhhhhh 2010-01-30 04:26:28 +0000 178)

И вывод от sort -k 3 cleaned.txt:

$ sort -k 3 cleaned.txt 
cb7bb041 (eeeeeee  2010-12-14 19:41:18 +0000  42)
35d8e9eb (cccccccc 2007-01-17 03:58:04 +0000 135)
d7377fa9 (hhhhhhhh 2010-01-30 04:26:28 +0000 178)

Поскольку Вы видите сортировку в день, поле, казалось, не произошло вообще. Вот вывод от cut -c 20- cleaned.txt | sort:

$ cut -c 20- cleaned.txt | sort
2007-01-17 03:58:04 +0000 135)
2010-01-30 04:26:28 +0000 178)
2010-12-14 19:41:18 +0000  42)

Сортировка в даты в этом случае хорошо работает! Какие-либо предложения?

2
задан 24.03.2011, 01:29

1 ответ

Я просто понял это. Более короткое имя пользователя eeeeeee средство там является дополнительным пространством перед полем даты. Начиная с разделителя полей для sort непробел должен очистить переход, поле даты для строки с более коротким именем пользователя имеет то пространство как часть поля ключа и отсортировано сначала. Простая фиксация:

git blame file | sort -b -k 3
4
ответ дан 08.12.2019, 06:29

Теги

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