오늘 나는 간단한 작업을하고 있다고 생각했습니다.
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
,,cccccccc
및hhhhhhhh
)을 갖지만 실제 이름은 종종 다를 수 있습니다 (예 : git.git은 1에서 5까지의 공백으로 구분 된 "단어"로 저자 이름이 있습니다). 사용하면-e
도움이 될 수 있습니다. 표시되는 이메일 주소는 공백이 거의 없습니다.