응답 시간 네 번째 필드를 기준으로 정렬하려는 로그 파일이 있습니다.
GET /api/user/john 200 0.194 ms - 7307
vi
그러나 여기에는 색상 레이블이 포함되어 있습니다 . 출력은 다음과 같습니다 .
^[[0mGET /api/user/john ^[[32m200 ^[[0m0.194 ms - 7307^[[0m
이를 수행하는 쉬운 방법이 있습니까?
답변1
- 정렬할 필드를 추출하고(일반적으로 또는
cut
사용 ) 해당 형식 이스케이프 시퀀스를 제거합니다. 2부의 스크립트는 다음에서 찾을 수 있습니다.sed
awk
스크립트 출력에서 제어 문자(콘솔 코드/색상 포함) 제거.uncolor
다음을 사용하여 이러한 스크립트 중 하나를 나타냅니다. - 얻은 결과를 원래 결과(
paste
)와 비교합니다. 데이터에 표시되지 않는 구분 기호를 사용하여 정렬합니다. - 유형.
- 정렬 키를 제거합니다.
예를 들어 필드가 탭으로 구분된 경우:
<input-file.txt cut -f 4 | uncolor |
paste - input-file.txt |
sort |
cut -f 2-