구문 분석하려는 텍스트 파일이 있습니다.
176.9.x.xx - MISS [07/Aug/2017:13:03:59 -0400] foo.org "GET /foo/bar?page=7 HTTP/1.1" 200 17441 "-" "Mozilla/5.0 (compatible; MegaIndex.ru/2.0; +http://megaindex.com/crawler)" u:192.168.x.x:80 t:0.002
정말 가치별로 정렬하고 싶습니다 t:0.002
. (모든 값이 0.002는 아니지만 이 필드를 숫자로 정렬해보려고 합니다.) 이제 이러한 항목 중 "t:-"가 표시됩니다(저는 이를 무시하기 위해 grep -v를 사용합니다).
정렬을 사용할 수 있다는 것을 알고 있지만 여기서 막히게 됩니다.
cat test.txt | grep -v "t:-" | sort -n
"t:" 값으로 정렬할 수 없는 것 같습니다. 정렬 명령에 뭔가를 더 추가해야 한다고 확신하지만 무엇인지 잘 모르겠습니다. 어떤 제안이 있으십니까?
답변1
"t" 필드가 항상 더 신뢰할 수 있는 마지막 필드인 경우 다음을 사용할 수 있습니다.슈워츠 변환중: 장식, 정렬, 장식 해제:
awk '{print substr($NF, 3), $0}' input | sort -n | cut -d ' ' -f2-
여기서 awk는 마지막 필드를 인쇄하고 앞의 "t:" 텍스트를 제거한 다음 정렬할 수 있는 좋은 숫자 값을 갖고 첫 번째 필드를 제거합니다.