Сегодня я думал, что делал простую операцию:
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)
Сортировка в даты в этом случае хорошо работает! Какие-либо предложения?
Я просто понял это. Более короткое имя пользователя eeeeeee
средство там является дополнительным пространством перед полем даты. Начиная с разделителя полей для sort
непробел должен очистить переход, поле даты для строки с более коротким именем пользователя имеет то пространство как часть поля ключа и отсортировано сначала. Простая фиксация:
git blame file | sort -b -k 3