다음과 같은 로그 파일이 있습니다.
[loggerid:1234-4567] api:api1() 5.91
[loggerid:7899-45671234] api:api12345() 11.00
[loggerid:3333-45671234564] api:api12345789() 11.05
다음과 같은 출력이 필요합니다.
- 첫 번째 열은
:
과 사이의 문자열 이어야 합니다.-
- 두 번째 열은
:
과 사이의 문자열 이어야 합니다.(
- 열 3 > 10인 행만 필요합니다.
- 모든 열의 너비는 고정되어 있어야 합니다.
7899 api12345 11.0
3333 api12345789 11.05
답변1
awk
모든 행이 정확한 패턴을 따른다고 가정하면 및 조합을 사용할 수 있습니다 column
(두 번째 행은 고정 너비 필드를 얻는 데 도움이 됩니다).
$ awk -F'[-: (]' '$NF>10{print $2,$5,$NF}' log | column -t
7899 api12345 11.00
3333 api12345789 11.05
설명하다
* awk -F'[-: (]'
: awk의 필드 구분 기호를 -
, :
또는 공백 (
중 하나로 설정합니다. 이를 통해 필드로 원하는 하위 문자열을 찾을 수 있습니다.
$NF>10
: 마지막 필드(NF
필드 수와$NF
마지막 필드의 값)가 10보다 큰 경우.print $2,$5,$NF
:
: 두 번째 필드(이 경우 첫 번째와 첫 번째 사이의 값), 다섯 번째 필드(여기에서는-
두 번째와 첫 번째 사이의 값) 및 마지막 필드를 인쇄합니다.:
(
awk
마지막으로 출력을 column -t
고정 너비 테이블로 파이프합니다.
-
줄에 , :
또는 공백의 조합이 다른 경우에는 이 기능이 작동하지 않습니다.(